﻿2026-06-22T02:23:00.1870335Z ##[group]Run ./traceable-reqs check --json
2026-06-22T02:23:00.1870639Z [36;1m./traceable-reqs check --json[0m
2026-06-22T02:23:00.1883348Z shell: /usr/bin/bash -e {0}
2026-06-22T02:23:00.1883572Z ##[endgroup]
2026-06-22T02:23:00.2755838Z {
2026-06-22T02:23:00.2756295Z   "schemaVersion": 1,
2026-06-22T02:23:00.2756647Z   "summary": {
2026-06-22T02:23:00.2756933Z     "requirementCount": 280,
2026-06-22T02:23:00.2757333Z     "completeCount": 280,
2026-06-22T02:23:00.2757715Z     "incompleteCount": 0,
2026-06-22T02:23:00.2758083Z     "findingCount": 0
2026-06-22T02:23:00.2758507Z   },
2026-06-22T02:23:00.2758800Z   "requirements": [
2026-06-22T02:23:00.2759237Z     {
2026-06-22T02:23:00.2759538Z       "id": "REQ-API-1",
2026-06-22T02:23:00.2760063Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-22T02:23:00.2760631Z       "requiredStages": [
2026-06-22T02:23:00.2761036Z         "impl",
2026-06-22T02:23:00.2761292Z         "unit",
2026-06-22T02:23:00.2761537Z         "int"
2026-06-22T02:23:00.2761827Z       ],
2026-06-22T02:23:00.2762058Z       "stages": {
2026-06-22T02:23:00.2762310Z         "doc": {
2026-06-22T02:23:00.2762568Z           "complete": false,
2026-06-22T02:23:00.2762863Z           "evidence": []
2026-06-22T02:23:00.2763149Z         },
2026-06-22T02:23:00.2763392Z         "impl": {
2026-06-22T02:23:00.2763654Z           "complete": true,
2026-06-22T02:23:00.2763950Z           "evidence": [
2026-06-22T02:23:00.2764221Z             {
2026-06-22T02:23:00.2764502Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.2764856Z               "line": 15
2026-06-22T02:23:00.2765108Z             }
2026-06-22T02:23:00.2765350Z           ]
2026-06-22T02:23:00.2765579Z         },
2026-06-22T02:23:00.2765824Z         "int": {
2026-06-22T02:23:00.2766076Z           "complete": true,
2026-06-22T02:23:00.2766360Z           "evidence": [
2026-06-22T02:23:00.2767385Z             {
2026-06-22T02:23:00.2767675Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.2768052Z               "line": 13
2026-06-22T02:23:00.2768324Z             }
2026-06-22T02:23:00.2768575Z           ]
2026-06-22T02:23:00.2768799Z         },
2026-06-22T02:23:00.2769119Z         "unit": {
2026-06-22T02:23:00.2769393Z           "complete": true,
2026-06-22T02:23:00.2769674Z           "evidence": [
2026-06-22T02:23:00.2769941Z             {
2026-06-22T02:23:00.2770212Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.2770566Z               "line": 717
2026-06-22T02:23:00.2770847Z             },
2026-06-22T02:23:00.2771080Z             {
2026-06-22T02:23:00.2771347Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.2771708Z               "line": 804
2026-06-22T02:23:00.2771974Z             }
2026-06-22T02:23:00.2772202Z           ]
2026-06-22T02:23:00.2772431Z         }
2026-06-22T02:23:00.2772660Z       }
2026-06-22T02:23:00.2772899Z     },
2026-06-22T02:23:00.2773137Z     {
2026-06-22T02:23:00.2773385Z       "id": "REQ-API-2",
2026-06-22T02:23:00.2773824Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-22T02:23:00.2774319Z       "requiredStages": [
2026-06-22T02:23:00.2774604Z         "impl",
2026-06-22T02:23:00.2774853Z         "unit",
2026-06-22T02:23:00.2775092Z         "int"
2026-06-22T02:23:00.2775334Z       ],
2026-06-22T02:23:00.2775586Z       "stages": {
2026-06-22T02:23:00.2775835Z         "doc": {
2026-06-22T02:23:00.2776092Z           "complete": false,
2026-06-22T02:23:00.2776398Z           "evidence": []
2026-06-22T02:23:00.2776666Z         },
2026-06-22T02:23:00.2776892Z         "impl": {
2026-06-22T02:23:00.2777162Z           "complete": true,
2026-06-22T02:23:00.2777457Z           "evidence": [
2026-06-22T02:23:00.2777715Z             {
2026-06-22T02:23:00.2778030Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:23:00.2778726Z               "line": 17
2026-06-22T02:23:00.2779054Z             },
2026-06-22T02:23:00.2779293Z             {
2026-06-22T02:23:00.2779797Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.2780148Z               "line": 20
2026-06-22T02:23:00.2780414Z             },
2026-06-22T02:23:00.2780653Z             {
2026-06-22T02:23:00.2780930Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.2781278Z               "line": 142
2026-06-22T02:23:00.2781545Z             },
2026-06-22T02:23:00.2781770Z             {
2026-06-22T02:23:00.2782051Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2782392Z               "line": 24
2026-06-22T02:23:00.2782666Z             },
2026-06-22T02:23:00.2782901Z             {
2026-06-22T02:23:00.2783187Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2783544Z               "line": 41
2026-06-22T02:23:00.2783811Z             },
2026-06-22T02:23:00.2784051Z             {
2026-06-22T02:23:00.2784337Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2784709Z               "line": 213
2026-06-22T02:23:00.2784990Z             },
2026-06-22T02:23:00.2785231Z             {
2026-06-22T02:23:00.2785507Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2785870Z               "line": 255
2026-06-22T02:23:00.2786146Z             },
2026-06-22T02:23:00.2786380Z             {
2026-06-22T02:23:00.2786667Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2787019Z               "line": 334
2026-06-22T02:23:00.2787306Z             },
2026-06-22T02:23:00.2787543Z             {
2026-06-22T02:23:00.2787817Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2788179Z               "line": 397
2026-06-22T02:23:00.2788456Z             },
2026-06-22T02:23:00.2788708Z             {
2026-06-22T02:23:00.2789032Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2789367Z               "line": 436
2026-06-22T02:23:00.2789552Z             },
2026-06-22T02:23:00.2789783Z             {
2026-06-22T02:23:00.2790078Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.2790453Z               "line": 17
2026-06-22T02:23:00.2790674Z             },
2026-06-22T02:23:00.2790847Z             {
2026-06-22T02:23:00.2791042Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.2791280Z               "line": 30
2026-06-22T02:23:00.2791476Z             },
2026-06-22T02:23:00.2791648Z             {
2026-06-22T02:23:00.2791848Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.2792100Z               "line": 63
2026-06-22T02:23:00.2792287Z             },
2026-06-22T02:23:00.2792448Z             {
2026-06-22T02:23:00.2792655Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.2792909Z               "line": 77
2026-06-22T02:23:00.2793103Z             }
2026-06-22T02:23:00.2793270Z           ]
2026-06-22T02:23:00.2793442Z         },
2026-06-22T02:23:00.2793604Z         "int": {
2026-06-22T02:23:00.2793799Z           "complete": true,
2026-06-22T02:23:00.2794005Z           "evidence": [
2026-06-22T02:23:00.2794195Z             {
2026-06-22T02:23:00.2794405Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.2794653Z               "line": 14
2026-06-22T02:23:00.2794844Z             },
2026-06-22T02:23:00.2795020Z             {
2026-06-22T02:23:00.2795217Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.2795469Z               "line": 187
2026-06-22T02:23:00.2795658Z             }
2026-06-22T02:23:00.2795829Z           ]
2026-06-22T02:23:00.2795997Z         },
2026-06-22T02:23:00.2796183Z         "unit": {
2026-06-22T02:23:00.2796359Z           "complete": true,
2026-06-22T02:23:00.2796579Z           "evidence": [
2026-06-22T02:23:00.2796778Z             {
2026-06-22T02:23:00.2796993Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:23:00.2797403Z               "line": 82
2026-06-22T02:23:00.2797589Z             },
2026-06-22T02:23:00.2797757Z             {
2026-06-22T02:23:00.2798141Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.2798377Z               "line": 279
2026-06-22T02:23:00.2798573Z             },
2026-06-22T02:23:00.2798744Z             {
2026-06-22T02:23:00.2799041Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2799292Z               "line": 709
2026-06-22T02:23:00.2799488Z             },
2026-06-22T02:23:00.2799660Z             {
2026-06-22T02:23:00.2799856Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2800104Z               "line": 720
2026-06-22T02:23:00.2800290Z             },
2026-06-22T02:23:00.2800465Z             {
2026-06-22T02:23:00.2800667Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2800907Z               "line": 873
2026-06-22T02:23:00.2801111Z             },
2026-06-22T02:23:00.2801282Z             {
2026-06-22T02:23:00.2801487Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2801732Z               "line": 919
2026-06-22T02:23:00.2801927Z             },
2026-06-22T02:23:00.2802107Z             {
2026-06-22T02:23:00.2802327Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.2802571Z               "line": 143
2026-06-22T02:23:00.2802755Z             },
2026-06-22T02:23:00.2802924Z             {
2026-06-22T02:23:00.2803118Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.2803361Z               "line": 187
2026-06-22T02:23:00.2803546Z             }
2026-06-22T02:23:00.2803721Z           ]
2026-06-22T02:23:00.2803878Z         }
2026-06-22T02:23:00.2804049Z       }
2026-06-22T02:23:00.2804293Z     },
2026-06-22T02:23:00.2804532Z     {
2026-06-22T02:23:00.2804789Z       "id": "REQ-API-3",
2026-06-22T02:23:00.2805166Z       "title": "commune/signoff are file-drops, not commands",
2026-06-22T02:23:00.2805570Z       "requiredStages": [
2026-06-22T02:23:00.2805875Z         "impl",
2026-06-22T02:23:00.2806116Z         "unit",
2026-06-22T02:23:00.2806375Z         "int"
2026-06-22T02:23:00.2806627Z       ],
2026-06-22T02:23:00.2806881Z       "stages": {
2026-06-22T02:23:00.2807148Z         "doc": {
2026-06-22T02:23:00.2807415Z           "complete": false,
2026-06-22T02:23:00.2807721Z           "evidence": []
2026-06-22T02:23:00.2807988Z         },
2026-06-22T02:23:00.2808225Z         "impl": {
2026-06-22T02:23:00.2808506Z           "complete": true,
2026-06-22T02:23:00.2808804Z           "evidence": [
2026-06-22T02:23:00.2809142Z             {
2026-06-22T02:23:00.2809448Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.2809805Z               "line": 27
2026-06-22T02:23:00.2835368Z             },
2026-06-22T02:23:00.2835692Z             {
2026-06-22T02:23:00.2836007Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2836378Z               "line": 566
2026-06-22T02:23:00.2836664Z             }
2026-06-22T02:23:00.2836946Z           ]
2026-06-22T02:23:00.2837181Z         },
2026-06-22T02:23:00.2837404Z         "int": {
2026-06-22T02:23:00.2837685Z           "complete": true,
2026-06-22T02:23:00.2837980Z           "evidence": [
2026-06-22T02:23:00.2838232Z             {
2026-06-22T02:23:00.2838529Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.2838895Z               "line": 261
2026-06-22T02:23:00.2839247Z             }
2026-06-22T02:23:00.2839500Z           ]
2026-06-22T02:23:00.2839731Z         },
2026-06-22T02:23:00.2839963Z         "unit": {
2026-06-22T02:23:00.2840215Z           "complete": true,
2026-06-22T02:23:00.2840513Z           "evidence": [
2026-06-22T02:23:00.2840771Z             {
2026-06-22T02:23:00.2841052Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.2841414Z               "line": 280
2026-06-22T02:23:00.2841696Z             },
2026-06-22T02:23:00.2841930Z             {
2026-06-22T02:23:00.2842211Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.2842816Z               "line": 948
2026-06-22T02:23:00.2843063Z             }
2026-06-22T02:23:00.2843456Z           ]
2026-06-22T02:23:00.2843680Z         }
2026-06-22T02:23:00.2843905Z       }
2026-06-22T02:23:00.2844129Z     },
2026-06-22T02:23:00.2844348Z     {
2026-06-22T02:23:00.2844591Z       "id": "REQ-API-4",
2026-06-22T02:23:00.2847234Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-22T02:23:00.2849413Z       "requiredStages": [
2026-06-22T02:23:00.2849684Z         "doc",
2026-06-22T02:23:00.2849942Z         "impl",
2026-06-22T02:23:00.2850170Z         "unit"
2026-06-22T02:23:00.2850403Z       ],
2026-06-22T02:23:00.2850643Z       "stages": {
2026-06-22T02:23:00.2850889Z         "doc": {
2026-06-22T02:23:00.2851148Z           "complete": true,
2026-06-22T02:23:00.2851440Z           "evidence": [
2026-06-22T02:23:00.2851693Z             {
2026-06-22T02:23:00.2851941Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.2852241Z               "line": 149
2026-06-22T02:23:00.2852504Z             }
2026-06-22T02:23:00.2852727Z           ]
2026-06-22T02:23:00.2852966Z         },
2026-06-22T02:23:00.2853205Z         "impl": {
2026-06-22T02:23:00.2853459Z           "complete": true,
2026-06-22T02:23:00.2853665Z           "evidence": [
2026-06-22T02:23:00.2853841Z             {
2026-06-22T02:23:00.2854030Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.2854278Z               "line": 484
2026-06-22T02:23:00.2854460Z             }
2026-06-22T02:23:00.2854622Z           ]
2026-06-22T02:23:00.2854785Z         },
2026-06-22T02:23:00.2855032Z         "int": {
2026-06-22T02:23:00.2855294Z           "complete": false,
2026-06-22T02:23:00.2855609Z           "evidence": []
2026-06-22T02:23:00.2855891Z         },
2026-06-22T02:23:00.2856105Z         "unit": {
2026-06-22T02:23:00.2856370Z           "complete": true,
2026-06-22T02:23:00.2856655Z           "evidence": [
2026-06-22T02:23:00.2856922Z             {
2026-06-22T02:23:00.2857197Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.2857556Z               "line": 657
2026-06-22T02:23:00.2857822Z             },
2026-06-22T02:23:00.2858056Z             {
2026-06-22T02:23:00.2858324Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.2858653Z               "line": 681
2026-06-22T02:23:00.2858925Z             },
2026-06-22T02:23:00.2859263Z             {
2026-06-22T02:23:00.2859538Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.2859820Z               "line": 705
2026-06-22T02:23:00.2860011Z             }
2026-06-22T02:23:00.2860173Z           ]
2026-06-22T02:23:00.2860316Z         }
2026-06-22T02:23:00.2860479Z       }
2026-06-22T02:23:00.2860630Z     },
2026-06-22T02:23:00.2860774Z     {
2026-06-22T02:23:00.2860935Z       "id": "REQ-ARCH-1",
2026-06-22T02:23:00.2861156Z       "title": "Many small acyclically-layered crates",
2026-06-22T02:23:00.2861411Z       "requiredStages": [
2026-06-22T02:23:00.2861586Z         "impl"
2026-06-22T02:23:00.2861748Z       ],
2026-06-22T02:23:00.2861896Z       "stages": {
2026-06-22T02:23:00.2862057Z         "doc": {
2026-06-22T02:23:00.2862225Z           "complete": false,
2026-06-22T02:23:00.2862430Z           "evidence": []
2026-06-22T02:23:00.2862605Z         },
2026-06-22T02:23:00.2862759Z         "impl": {
2026-06-22T02:23:00.2862925Z           "complete": true,
2026-06-22T02:23:00.2863103Z           "evidence": [
2026-06-22T02:23:00.2863278Z             {
2026-06-22T02:23:00.2863459Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-22T02:23:00.2863835Z               "line": 18
2026-06-22T02:23:00.2864014Z             },
2026-06-22T02:23:00.2864273Z             {
2026-06-22T02:23:00.2864457Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-22T02:23:00.2864691Z               "line": 12
2026-06-22T02:23:00.2864872Z             },
2026-06-22T02:23:00.2865030Z             {
2026-06-22T02:23:00.2865215Z               "path": "crates/spt-store/src/lib.rs",
2026-06-22T02:23:00.2865440Z               "line": 12
2026-06-22T02:23:00.2865730Z             }
2026-06-22T02:23:00.2865903Z           ]
2026-06-22T02:23:00.2866055Z         },
2026-06-22T02:23:00.2866203Z         "int": {
2026-06-22T02:23:00.2866378Z           "complete": false,
2026-06-22T02:23:00.2866586Z           "evidence": []
2026-06-22T02:23:00.2866769Z         },
2026-06-22T02:23:00.2866922Z         "unit": {
2026-06-22T02:23:00.2867095Z           "complete": false,
2026-06-22T02:23:00.2867292Z           "evidence": []
2026-06-22T02:23:00.2867462Z         }
2026-06-22T02:23:00.2867630Z       }
2026-06-22T02:23:00.2867777Z     },
2026-06-22T02:23:00.2867921Z     {
2026-06-22T02:23:00.2868091Z       "id": "REQ-ARCH-2",
2026-06-22T02:23:00.2868354Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-22T02:23:00.2868650Z       "requiredStages": [
2026-06-22T02:23:00.2868837Z         "impl"
2026-06-22T02:23:00.2869089Z       ],
2026-06-22T02:23:00.2869250Z       "stages": {
2026-06-22T02:23:00.2869414Z         "doc": {
2026-06-22T02:23:00.2869584Z           "complete": false,
2026-06-22T02:23:00.2869765Z           "evidence": []
2026-06-22T02:23:00.2869946Z         },
2026-06-22T02:23:00.2870099Z         "impl": {
2026-06-22T02:23:00.2870270Z           "complete": true,
2026-06-22T02:23:00.2870457Z           "evidence": [
2026-06-22T02:23:00.2870632Z             {
2026-06-22T02:23:00.2870824Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-22T02:23:00.2871053Z               "line": 18
2026-06-22T02:23:00.2871229Z             }
2026-06-22T02:23:00.2871396Z           ]
2026-06-22T02:23:00.2871538Z         },
2026-06-22T02:23:00.2871692Z         "int": {
2026-06-22T02:23:00.2871876Z           "complete": false,
2026-06-22T02:23:00.2872067Z           "evidence": []
2026-06-22T02:23:00.2872245Z         },
2026-06-22T02:23:00.2872385Z         "unit": {
2026-06-22T02:23:00.2872555Z           "complete": false,
2026-06-22T02:23:00.2872746Z           "evidence": []
2026-06-22T02:23:00.2872927Z         }
2026-06-22T02:23:00.2873085Z       }
2026-06-22T02:23:00.2873232Z     },
2026-06-22T02:23:00.2873390Z     {
2026-06-22T02:23:00.2873543Z       "id": "REQ-ARCH-3",
2026-06-22T02:23:00.2873843Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-22T02:23:00.2874172Z       "requiredStages": [
2026-06-22T02:23:00.2874362Z         "impl",
2026-06-22T02:23:00.2874521Z         "unit"
2026-06-22T02:23:00.2874682Z       ],
2026-06-22T02:23:00.2874838Z       "stages": {
2026-06-22T02:23:00.2875009Z         "doc": {
2026-06-22T02:23:00.2875180Z           "complete": false,
2026-06-22T02:23:00.2875370Z           "evidence": []
2026-06-22T02:23:00.2875553Z         },
2026-06-22T02:23:00.2875713Z         "impl": {
2026-06-22T02:23:00.2875877Z           "complete": true,
2026-06-22T02:23:00.2876061Z           "evidence": [
2026-06-22T02:23:00.2876238Z             {
2026-06-22T02:23:00.2876428Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:23:00.2876672Z               "line": 34
2026-06-22T02:23:00.2876854Z             },
2026-06-22T02:23:00.2877011Z             {
2026-06-22T02:23:00.2877197Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:23:00.2877433Z               "line": 41
2026-06-22T02:23:00.2877603Z             }
2026-06-22T02:23:00.2877756Z           ]
2026-06-22T02:23:00.2877899Z         },
2026-06-22T02:23:00.2878052Z         "int": {
2026-06-22T02:23:00.2878224Z           "complete": false,
2026-06-22T02:23:00.2878420Z           "evidence": []
2026-06-22T02:23:00.2878710Z         },
2026-06-22T02:23:00.2878862Z         "unit": {
2026-06-22T02:23:00.2879120Z           "complete": true,
2026-06-22T02:23:00.2879439Z           "evidence": [
2026-06-22T02:23:00.2879620Z             {
2026-06-22T02:23:00.2879815Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:23:00.2880055Z               "line": 51
2026-06-22T02:23:00.2880234Z             },
2026-06-22T02:23:00.2880393Z             {
2026-06-22T02:23:00.2880582Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:23:00.2880821Z               "line": 71
2026-06-22T02:23:00.2880993Z             },
2026-06-22T02:23:00.2881150Z             {
2026-06-22T02:23:00.2881341Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:23:00.2881584Z               "line": 83
2026-06-22T02:23:00.2881760Z             }
2026-06-22T02:23:00.2881919Z           ]
2026-06-22T02:23:00.2882070Z         }
2026-06-22T02:23:00.2882218Z       }
2026-06-22T02:23:00.2882365Z     },
2026-06-22T02:23:00.2882512Z     {
2026-06-22T02:23:00.2882678Z       "id": "REQ-ARCH-4",
2026-06-22T02:23:00.2882950Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-22T02:23:00.2883260Z       "requiredStages": [
2026-06-22T02:23:00.2883444Z         "impl",
2026-06-22T02:23:00.2883617Z         "unit"
2026-06-22T02:23:00.2883783Z       ],
2026-06-22T02:23:00.2883946Z       "stages": {
2026-06-22T02:23:00.2884117Z         "doc": {
2026-06-22T02:23:00.2884288Z           "complete": false,
2026-06-22T02:23:00.2884481Z           "evidence": []
2026-06-22T02:23:00.2884661Z         },
2026-06-22T02:23:00.2884824Z         "impl": {
2026-06-22T02:23:00.2884995Z           "complete": true,
2026-06-22T02:23:00.2885177Z           "evidence": [
2026-06-22T02:23:00.2885346Z             {
2026-06-22T02:23:00.2885541Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2885778Z               "line": 165
2026-06-22T02:23:00.2885958Z             },
2026-06-22T02:23:00.2886132Z             {
2026-06-22T02:23:00.2886316Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2886556Z               "line": 188
2026-06-22T02:23:00.2886747Z             },
2026-06-22T02:23:00.2886912Z             {
2026-06-22T02:23:00.2887104Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2887333Z               "line": 208
2026-06-22T02:23:00.2887518Z             },
2026-06-22T02:23:00.2887667Z             {
2026-06-22T02:23:00.2887856Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2888103Z               "line": 223
2026-06-22T02:23:00.2888272Z             },
2026-06-22T02:23:00.2888436Z             {
2026-06-22T02:23:00.2888621Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2888850Z               "line": 273
2026-06-22T02:23:00.2889127Z             }
2026-06-22T02:23:00.2889285Z           ]
2026-06-22T02:23:00.2889446Z         },
2026-06-22T02:23:00.2889609Z         "int": {
2026-06-22T02:23:00.2889789Z           "complete": false,
2026-06-22T02:23:00.2889985Z           "evidence": []
2026-06-22T02:23:00.2890161Z         },
2026-06-22T02:23:00.2890319Z         "unit": {
2026-06-22T02:23:00.2890490Z           "complete": true,
2026-06-22T02:23:00.2890681Z           "evidence": [
2026-06-22T02:23:00.2890852Z             {
2026-06-22T02:23:00.2891038Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2891272Z               "line": 334
2026-06-22T02:23:00.2891447Z             },
2026-06-22T02:23:00.2891610Z             {
2026-06-22T02:23:00.2891801Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2892029Z               "line": 344
2026-06-22T02:23:00.2892202Z             },
2026-06-22T02:23:00.2892363Z             {
2026-06-22T02:23:00.2892545Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2892788Z               "line": 355
2026-06-22T02:23:00.2892959Z             },
2026-06-22T02:23:00.2893120Z             {
2026-06-22T02:23:00.2893438Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2893656Z               "line": 366
2026-06-22T02:23:00.2893943Z             },
2026-06-22T02:23:00.2894096Z             {
2026-06-22T02:23:00.2894281Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2894515Z               "line": 378
2026-06-22T02:23:00.2894687Z             },
2026-06-22T02:23:00.2894844Z             {
2026-06-22T02:23:00.2895031Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2895259Z               "line": 391
2026-06-22T02:23:00.2895427Z             },
2026-06-22T02:23:00.2895583Z             {
2026-06-22T02:23:00.2895770Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2896007Z               "line": 402
2026-06-22T02:23:00.2896180Z             },
2026-06-22T02:23:00.2896343Z             {
2026-06-22T02:23:00.2896523Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2896758Z               "line": 419
2026-06-22T02:23:00.2896944Z             },
2026-06-22T02:23:00.2897102Z             {
2026-06-22T02:23:00.2897283Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.2897515Z               "line": 547
2026-06-22T02:23:00.2897697Z             }
2026-06-22T02:23:00.2897854Z           ]
2026-06-22T02:23:00.2956904Z         }
2026-06-22T02:23:00.2957247Z       }
2026-06-22T02:23:00.2957462Z     },
2026-06-22T02:23:00.2957633Z     {
2026-06-22T02:23:00.2957810Z       "id": "REQ-CLI-1",
2026-06-22T02:23:00.2959140Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-22T02:23:00.2960334Z       "requiredStages": [
2026-06-22T02:23:00.2960576Z         "impl",
2026-06-22T02:23:00.2960743Z         "unit"
2026-06-22T02:23:00.2960914Z       ],
2026-06-22T02:23:00.2961081Z       "stages": {
2026-06-22T02:23:00.2961249Z         "doc": {
2026-06-22T02:23:00.2961424Z           "complete": false,
2026-06-22T02:23:00.2961631Z           "evidence": []
2026-06-22T02:23:00.2961801Z         },
2026-06-22T02:23:00.2961963Z         "impl": {
2026-06-22T02:23:00.2962132Z           "complete": true,
2026-06-22T02:23:00.2962333Z           "evidence": [
2026-06-22T02:23:00.2962498Z             {
2026-06-22T02:23:00.2962681Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2962910Z               "line": 225
2026-06-22T02:23:00.2963095Z             },
2026-06-22T02:23:00.2963258Z             {
2026-06-22T02:23:00.2963438Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2963672Z               "line": 1093
2026-06-22T02:23:00.2963864Z             },
2026-06-22T02:23:00.2964035Z             {
2026-06-22T02:23:00.2964221Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2964436Z               "line": 1720
2026-06-22T02:23:00.2964620Z             },
2026-06-22T02:23:00.2964777Z             {
2026-06-22T02:23:00.2964949Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2965169Z               "line": 3124
2026-06-22T02:23:00.2965354Z             }
2026-06-22T02:23:00.2965522Z           ]
2026-06-22T02:23:00.2965683Z         },
2026-06-22T02:23:00.2965841Z         "int": {
2026-06-22T02:23:00.2966012Z           "complete": false,
2026-06-22T02:23:00.2966218Z           "evidence": []
2026-06-22T02:23:00.2966405Z         },
2026-06-22T02:23:00.2966565Z         "unit": {
2026-06-22T02:23:00.2966743Z           "complete": true,
2026-06-22T02:23:00.2966936Z           "evidence": [
2026-06-22T02:23:00.2967117Z             {
2026-06-22T02:23:00.2967291Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2967516Z               "line": 7947
2026-06-22T02:23:00.2967702Z             }
2026-06-22T02:23:00.2968136Z           ]
2026-06-22T02:23:00.2968318Z         }
2026-06-22T02:23:00.2968465Z       }
2026-06-22T02:23:00.2968751Z     },
2026-06-22T02:23:00.2968903Z     {
2026-06-22T02:23:00.2969132Z       "id": "REQ-CLI-2",
2026-06-22T02:23:00.2969928Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-22T02:23:00.2970745Z       "requiredStages": [
2026-06-22T02:23:00.2970932Z         "impl",
2026-06-22T02:23:00.2971088Z         "unit"
2026-06-22T02:23:00.2971247Z       ],
2026-06-22T02:23:00.2971398Z       "stages": {
2026-06-22T02:23:00.2971571Z         "doc": {
2026-06-22T02:23:00.2971741Z           "complete": false,
2026-06-22T02:23:00.2971938Z           "evidence": []
2026-06-22T02:23:00.2972114Z         },
2026-06-22T02:23:00.2972271Z         "impl": {
2026-06-22T02:23:00.2972466Z           "complete": true,
2026-06-22T02:23:00.2972654Z           "evidence": [
2026-06-22T02:23:00.2972835Z             {
2026-06-22T02:23:00.2973026Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.2973279Z               "line": 414
2026-06-22T02:23:00.2973499Z             },
2026-06-22T02:23:00.2973674Z             {
2026-06-22T02:23:00.2973874Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:23:00.2974124Z               "line": 97
2026-06-22T02:23:00.2974299Z             },
2026-06-22T02:23:00.2974457Z             {
2026-06-22T02:23:00.2974657Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.2974904Z               "line": 256
2026-06-22T02:23:00.2975078Z             },
2026-06-22T02:23:00.2975233Z             {
2026-06-22T02:23:00.2975409Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2975633Z               "line": 434
2026-06-22T02:23:00.2975815Z             },
2026-06-22T02:23:00.2975977Z             {
2026-06-22T02:23:00.2976158Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2976401Z               "line": 1174
2026-06-22T02:23:00.2976586Z             },
2026-06-22T02:23:00.2976744Z             {
2026-06-22T02:23:00.2976921Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2977149Z               "line": 1958
2026-06-22T02:23:00.2977336Z             },
2026-06-22T02:23:00.2977496Z             {
2026-06-22T02:23:00.2977677Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2977899Z               "line": 2047
2026-06-22T02:23:00.2978086Z             },
2026-06-22T02:23:00.2978248Z             {
2026-06-22T02:23:00.2978419Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2978639Z               "line": 2108
2026-06-22T02:23:00.2978819Z             }
2026-06-22T02:23:00.2979049Z           ]
2026-06-22T02:23:00.2979217Z         },
2026-06-22T02:23:00.2979378Z         "int": {
2026-06-22T02:23:00.2979555Z           "complete": false,
2026-06-22T02:23:00.2979759Z           "evidence": []
2026-06-22T02:23:00.2979941Z         },
2026-06-22T02:23:00.2980098Z         "unit": {
2026-06-22T02:23:00.2980270Z           "complete": true,
2026-06-22T02:23:00.2980459Z           "evidence": [
2026-06-22T02:23:00.2980633Z             {
2026-06-22T02:23:00.2980833Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.2981076Z               "line": 338
2026-06-22T02:23:00.2981263Z             },
2026-06-22T02:23:00.2981415Z             {
2026-06-22T02:23:00.2981588Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2981807Z               "line": 8102
2026-06-22T02:23:00.2981982Z             }
2026-06-22T02:23:00.2982136Z           ]
2026-06-22T02:23:00.2982297Z         }
2026-06-22T02:23:00.2982456Z       }
2026-06-22T02:23:00.2982616Z     },
2026-06-22T02:23:00.2982766Z     {
2026-06-22T02:23:00.2982926Z       "id": "REQ-CLI-3",
2026-06-22T02:23:00.2983716Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-22T02:23:00.2984740Z       "requiredStages": [
2026-06-22T02:23:00.2984931Z         "impl",
2026-06-22T02:23:00.2985097Z         "unit"
2026-06-22T02:23:00.2985256Z       ],
2026-06-22T02:23:00.2985421Z       "stages": {
2026-06-22T02:23:00.2985590Z         "doc": {
2026-06-22T02:23:00.2985769Z           "complete": false,
2026-06-22T02:23:00.2985965Z           "evidence": []
2026-06-22T02:23:00.2986136Z         },
2026-06-22T02:23:00.2986299Z         "impl": {
2026-06-22T02:23:00.2986470Z           "complete": true,
2026-06-22T02:23:00.2986661Z           "evidence": [
2026-06-22T02:23:00.2986842Z             {
2026-06-22T02:23:00.2987033Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2987262Z               "line": 1087
2026-06-22T02:23:00.2987457Z             }
2026-06-22T02:23:00.2987615Z           ]
2026-06-22T02:23:00.2987776Z         },
2026-06-22T02:23:00.2987939Z         "int": {
2026-06-22T02:23:00.2988109Z           "complete": false,
2026-06-22T02:23:00.2988312Z           "evidence": []
2026-06-22T02:23:00.2988503Z         },
2026-06-22T02:23:00.2988660Z         "unit": {
2026-06-22T02:23:00.2988837Z           "complete": true,
2026-06-22T02:23:00.2989094Z           "evidence": [
2026-06-22T02:23:00.2989275Z             {
2026-06-22T02:23:00.2989457Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2989684Z               "line": 7912
2026-06-22T02:23:00.2989871Z             }
2026-06-22T02:23:00.2990023Z           ]
2026-06-22T02:23:00.2990186Z         }
2026-06-22T02:23:00.2990343Z       }
2026-06-22T02:23:00.2990501Z     },
2026-06-22T02:23:00.2990653Z     {
2026-06-22T02:23:00.2990820Z       "id": "REQ-CLI-4",
2026-06-22T02:23:00.2993158Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-22T02:23:00.2995071Z       "requiredStages": [],
2026-06-22T02:23:00.2995263Z       "stages": {
2026-06-22T02:23:00.2995443Z         "doc": {
2026-06-22T02:23:00.2995615Z           "complete": false,
2026-06-22T02:23:00.2995821Z           "evidence": []
2026-06-22T02:23:00.2996068Z         },
2026-06-22T02:23:00.2996306Z         "impl": {
2026-06-22T02:23:00.2996634Z           "complete": true,
2026-06-22T02:23:00.2997015Z           "evidence": [
2026-06-22T02:23:00.2997297Z             {
2026-06-22T02:23:00.2997555Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.2997988Z               "line": 5678
2026-06-22T02:23:00.2998255Z             }
2026-06-22T02:23:00.2998541Z           ]
2026-06-22T02:23:00.2998807Z         },
2026-06-22T02:23:00.2999101Z         "int": {
2026-06-22T02:23:00.2999426Z           "complete": false,
2026-06-22T02:23:00.2999721Z           "evidence": []
2026-06-22T02:23:00.3000017Z         },
2026-06-22T02:23:00.3000327Z         "unit": {
2026-06-22T02:23:00.3000564Z           "complete": false,
2026-06-22T02:23:00.3000913Z           "evidence": []
2026-06-22T02:23:00.3001175Z         }
2026-06-22T02:23:00.3001456Z       }
2026-06-22T02:23:00.3001716Z     },
2026-06-22T02:23:00.3001954Z     {
2026-06-22T02:23:00.3002269Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-22T02:23:00.3005513Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-22T02:23:00.3008777Z       "requiredStages": [
2026-06-22T02:23:00.3009139Z         "impl",
2026-06-22T02:23:00.3009489Z         "unit"
2026-06-22T02:23:00.3009756Z       ],
2026-06-22T02:23:00.3010053Z       "stages": {
2026-06-22T02:23:00.3010338Z         "doc": {
2026-06-22T02:23:00.3010601Z           "complete": false,
2026-06-22T02:23:00.3010926Z           "evidence": []
2026-06-22T02:23:00.3011202Z         },
2026-06-22T02:23:00.3011435Z         "impl": {
2026-06-22T02:23:00.3011754Z           "complete": true,
2026-06-22T02:23:00.3012035Z           "evidence": [
2026-06-22T02:23:00.3012361Z             {
2026-06-22T02:23:00.3012662Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3012971Z               "line": 8
2026-06-22T02:23:00.3013305Z             },
2026-06-22T02:23:00.3013563Z             {
2026-06-22T02:23:00.3013849Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3014192Z               "line": 51
2026-06-22T02:23:00.3014465Z             },
2026-06-22T02:23:00.3014820Z             {
2026-06-22T02:23:00.3015095Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3015458Z               "line": 82
2026-06-22T02:23:00.3015734Z             },
2026-06-22T02:23:00.3015967Z             {
2026-06-22T02:23:00.3016282Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3016602Z               "line": 229
2026-06-22T02:23:00.3016936Z             }
2026-06-22T02:23:00.3017188Z           ]
2026-06-22T02:23:00.3017445Z         },
2026-06-22T02:23:00.3017727Z         "int": {
2026-06-22T02:23:00.3017994Z           "complete": false,
2026-06-22T02:23:00.3018270Z           "evidence": []
2026-06-22T02:23:00.3018580Z         },
2026-06-22T02:23:00.3018832Z         "unit": {
2026-06-22T02:23:00.3019861Z           "complete": true,
2026-06-22T02:23:00.3020321Z           "evidence": [
2026-06-22T02:23:00.3020646Z             {
2026-06-22T02:23:00.3021094Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3021528Z               "line": 249
2026-06-22T02:23:00.3021885Z             },
2026-06-22T02:23:00.3022233Z             {
2026-06-22T02:23:00.3022576Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3023069Z               "line": 256
2026-06-22T02:23:00.3023399Z             },
2026-06-22T02:23:00.3023723Z             {
2026-06-22T02:23:00.3024090Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3024485Z               "line": 263
2026-06-22T02:23:00.3024877Z             },
2026-06-22T02:23:00.3025175Z             {
2026-06-22T02:23:00.3025488Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3025999Z               "line": 270
2026-06-22T02:23:00.3026328Z             },
2026-06-22T02:23:00.3026699Z             {
2026-06-22T02:23:00.3027033Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3027414Z               "line": 297
2026-06-22T02:23:00.3027802Z             },
2026-06-22T02:23:00.3028104Z             {
2026-06-22T02:23:00.3028777Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3029278Z               "line": 307
2026-06-22T02:23:00.3029721Z             },
2026-06-22T02:23:00.3030090Z             {
2026-06-22T02:23:00.3030440Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3030845Z               "line": 317
2026-06-22T02:23:00.3031196Z             },
2026-06-22T02:23:00.3031468Z             {
2026-06-22T02:23:00.3031811Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3032116Z               "line": 331
2026-06-22T02:23:00.3032399Z             },
2026-06-22T02:23:00.3032671Z             {
2026-06-22T02:23:00.3032933Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3033288Z               "line": 340
2026-06-22T02:23:00.3033562Z             },
2026-06-22T02:23:00.3033862Z             {
2026-06-22T02:23:00.3034158Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3034458Z               "line": 348
2026-06-22T02:23:00.3034788Z             }
2026-06-22T02:23:00.3035026Z           ]
2026-06-22T02:23:00.3035261Z         }
2026-06-22T02:23:00.3035581Z       }
2026-06-22T02:23:00.3035826Z     },
2026-06-22T02:23:00.3036139Z     {
2026-06-22T02:23:00.3036419Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-22T02:23:00.3044958Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-22T02:23:00.3049272Z       "requiredStages": [
2026-06-22T02:23:00.3049664Z         "impl",
2026-06-22T02:23:00.3049932Z         "unit"
2026-06-22T02:23:00.3050183Z       ],
2026-06-22T02:23:00.3050479Z       "stages": {
2026-06-22T02:23:00.3050760Z         "doc": {
2026-06-22T02:23:00.3051042Z           "complete": false,
2026-06-22T02:23:00.3051347Z           "evidence": []
2026-06-22T02:23:00.3051626Z         },
2026-06-22T02:23:00.3051940Z         "impl": {
2026-06-22T02:23:00.3052222Z           "complete": true,
2026-06-22T02:23:00.3052536Z           "evidence": [
2026-06-22T02:23:00.3052822Z             {
2026-06-22T02:23:00.3053113Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3053500Z               "line": 141
2026-06-22T02:23:00.3053786Z             },
2026-06-22T02:23:00.3054009Z             {
2026-06-22T02:23:00.3054370Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3054692Z               "line": 1376
2026-06-22T02:23:00.3054992Z             },
2026-06-22T02:23:00.3055264Z             {
2026-06-22T02:23:00.3055509Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3055893Z               "line": 2145
2026-06-22T02:23:00.3056160Z             },
2026-06-22T02:23:00.3056586Z             {
2026-06-22T02:23:00.3056912Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3057321Z               "line": 4368
2026-06-22T02:23:00.3057632Z             },
2026-06-22T02:23:00.3057878Z             {
2026-06-22T02:23:00.3058223Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3058542Z               "line": 4466
2026-06-22T02:23:00.3058823Z             },
2026-06-22T02:23:00.3059215Z             {
2026-06-22T02:23:00.3059492Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3059823Z               "line": 5257
2026-06-22T02:23:00.3060094Z             },
2026-06-22T02:23:00.3060352Z             {
2026-06-22T02:23:00.3060662Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3060996Z               "line": 39
2026-06-22T02:23:00.3061244Z             }
2026-06-22T02:23:00.3061592Z           ]
2026-06-22T02:23:00.3061831Z         },
2026-06-22T02:23:00.3062097Z         "int": {
2026-06-22T02:23:00.3062395Z           "complete": false,
2026-06-22T02:23:00.3062661Z           "evidence": []
2026-06-22T02:23:00.3062985Z         },
2026-06-22T02:23:00.3063234Z         "unit": {
2026-06-22T02:23:00.3063520Z           "complete": true,
2026-06-22T02:23:00.3063863Z           "evidence": [
2026-06-22T02:23:00.3064116Z             {
2026-06-22T02:23:00.3064431Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3064741Z               "line": 10272
2026-06-22T02:23:00.3065040Z             },
2026-06-22T02:23:00.3065310Z             {
2026-06-22T02:23:00.3065576Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3074204Z               "line": 281
2026-06-22T02:23:00.3074414Z             },
2026-06-22T02:23:00.3074587Z             {
2026-06-22T02:23:00.3074809Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3075057Z               "line": 358
2026-06-22T02:23:00.3075249Z             },
2026-06-22T02:23:00.3075405Z             {
2026-06-22T02:23:00.3075609Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3075841Z               "line": 381
2026-06-22T02:23:00.3076032Z             },
2026-06-22T02:23:00.3076195Z             {
2026-06-22T02:23:00.3076380Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:23:00.3076619Z               "line": 395
2026-06-22T02:23:00.3076815Z             }
2026-06-22T02:23:00.3076976Z           ]
2026-06-22T02:23:00.3077139Z         }
2026-06-22T02:23:00.3077290Z       }
2026-06-22T02:23:00.3077440Z     },
2026-06-22T02:23:00.3077586Z     {
2026-06-22T02:23:00.3077750Z       "id": "REQ-CONSENT-1",
2026-06-22T02:23:00.3078742Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-22T02:23:00.3079819Z       "requiredStages": [
2026-06-22T02:23:00.3080016Z         "impl",
2026-06-22T02:23:00.3080187Z         "unit"
2026-06-22T02:23:00.3080350Z       ],
2026-06-22T02:23:00.3080501Z       "stages": {
2026-06-22T02:23:00.3080674Z         "doc": {
2026-06-22T02:23:00.3080843Z           "complete": false,
2026-06-22T02:23:00.3081044Z           "evidence": []
2026-06-22T02:23:00.3081234Z         },
2026-06-22T02:23:00.3081378Z         "impl": {
2026-06-22T02:23:00.3081549Z           "complete": true,
2026-06-22T02:23:00.3081746Z           "evidence": [
2026-06-22T02:23:00.3081922Z             {
2026-06-22T02:23:00.3082125Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3082369Z               "line": 27
2026-06-22T02:23:00.3082551Z             },
2026-06-22T02:23:00.3082722Z             {
2026-06-22T02:23:00.3082910Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3083154Z               "line": 75
2026-06-22T02:23:00.3083330Z             },
2026-06-22T02:23:00.3083640Z             {
2026-06-22T02:23:00.3083825Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3084169Z               "line": 98
2026-06-22T02:23:00.3084344Z             },
2026-06-22T02:23:00.3084508Z             {
2026-06-22T02:23:00.3084692Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:23:00.3084917Z               "line": 82
2026-06-22T02:23:00.3085094Z             },
2026-06-22T02:23:00.3085255Z             {
2026-06-22T02:23:00.3085443Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:23:00.3085690Z               "line": 109
2026-06-22T02:23:00.3085871Z             },
2026-06-22T02:23:00.3086026Z             {
2026-06-22T02:23:00.3086230Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:23:00.3086464Z               "line": 127
2026-06-22T02:23:00.3086644Z             },
2026-06-22T02:23:00.3086807Z             {
2026-06-22T02:23:00.3086997Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:23:00.3087235Z               "line": 142
2026-06-22T02:23:00.3087413Z             },
2026-06-22T02:23:00.3087589Z             {
2026-06-22T02:23:00.3087770Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3088000Z               "line": 7048
2026-06-22T02:23:00.3088189Z             }
2026-06-22T02:23:00.3088353Z           ]
2026-06-22T02:23:00.3088508Z         },
2026-06-22T02:23:00.3088670Z         "int": {
2026-06-22T02:23:00.3088839Z           "complete": false,
2026-06-22T02:23:00.3089107Z           "evidence": []
2026-06-22T02:23:00.3089288Z         },
2026-06-22T02:23:00.3089478Z         "unit": {
2026-06-22T02:23:00.3089669Z           "complete": true,
2026-06-22T02:23:00.3089864Z           "evidence": [
2026-06-22T02:23:00.3090032Z             {
2026-06-22T02:23:00.3090217Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3090460Z               "line": 334
2026-06-22T02:23:00.3090642Z             },
2026-06-22T02:23:00.3090804Z             {
2026-06-22T02:23:00.3091004Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3091248Z               "line": 380
2026-06-22T02:23:00.3091437Z             },
2026-06-22T02:23:00.3091595Z             {
2026-06-22T02:23:00.3091785Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3092023Z               "line": 391
2026-06-22T02:23:00.3092196Z             },
2026-06-22T02:23:00.3092348Z             {
2026-06-22T02:23:00.3092549Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:23:00.3092792Z               "line": 165
2026-06-22T02:23:00.3092978Z             },
2026-06-22T02:23:00.3093135Z             {
2026-06-22T02:23:00.3093330Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:23:00.3093568Z               "line": 184
2026-06-22T02:23:00.3093749Z             },
2026-06-22T02:23:00.3093913Z             {
2026-06-22T02:23:00.3094114Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:23:00.3094361Z               "line": 204
2026-06-22T02:23:00.3094543Z             },
2026-06-22T02:23:00.3094700Z             {
2026-06-22T02:23:00.3094881Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3095106Z               "line": 8334
2026-06-22T02:23:00.3095281Z             }
2026-06-22T02:23:00.3095439Z           ]
2026-06-22T02:23:00.3095596Z         }
2026-06-22T02:23:00.3095764Z       }
2026-06-22T02:23:00.3095916Z     },
2026-06-22T02:23:00.3096079Z     {
2026-06-22T02:23:00.3096250Z       "id": "REQ-CONSENT-2",
2026-06-22T02:23:00.3097161Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-22T02:23:00.3098096Z       "requiredStages": [
2026-06-22T02:23:00.3098279Z         "impl",
2026-06-22T02:23:00.3098555Z         "unit"
2026-06-22T02:23:00.3098721Z       ],
2026-06-22T02:23:00.3098884Z       "stages": {
2026-06-22T02:23:00.3099333Z         "doc": {
2026-06-22T02:23:00.3099499Z           "complete": false,
2026-06-22T02:23:00.3099700Z           "evidence": []
2026-06-22T02:23:00.3099877Z         },
2026-06-22T02:23:00.3100038Z         "impl": {
2026-06-22T02:23:00.3100225Z           "complete": true,
2026-06-22T02:23:00.3100414Z           "evidence": [
2026-06-22T02:23:00.3100601Z             {
2026-06-22T02:23:00.3100802Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3101049Z               "line": 140
2026-06-22T02:23:00.3101230Z             },
2026-06-22T02:23:00.3101383Z             {
2026-06-22T02:23:00.3101564Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3101804Z               "line": 165
2026-06-22T02:23:00.3101987Z             },
2026-06-22T02:23:00.3102155Z             {
2026-06-22T02:23:00.3102340Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3102584Z               "line": 199
2026-06-22T02:23:00.3102756Z             },
2026-06-22T02:23:00.3102927Z             {
2026-06-22T02:23:00.3103109Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3103347Z               "line": 241
2026-06-22T02:23:00.3103523Z             },
2026-06-22T02:23:00.3103682Z             {
2026-06-22T02:23:00.3103876Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3104114Z               "line": 269
2026-06-22T02:23:00.3104294Z             },
2026-06-22T02:23:00.3104455Z             {
2026-06-22T02:23:00.3104650Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3104883Z               "line": 300
2026-06-22T02:23:00.3105060Z             },
2026-06-22T02:23:00.3105212Z             {
2026-06-22T02:23:00.3105394Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3105623Z               "line": 6839
2026-06-22T02:23:00.3105803Z             },
2026-06-22T02:23:00.3105976Z             {
2026-06-22T02:23:00.3106156Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3106385Z               "line": 6897
2026-06-22T02:23:00.3106572Z             }
2026-06-22T02:23:00.3106728Z           ]
2026-06-22T02:23:00.3106887Z         },
2026-06-22T02:23:00.3107052Z         "int": {
2026-06-22T02:23:00.3107228Z           "complete": false,
2026-06-22T02:23:00.3107421Z           "evidence": []
2026-06-22T02:23:00.3107603Z         },
2026-06-22T02:23:00.3107760Z         "unit": {
2026-06-22T02:23:00.3107937Z           "complete": true,
2026-06-22T02:23:00.3108122Z           "evidence": [
2026-06-22T02:23:00.3108309Z             {
2026-06-22T02:23:00.3108543Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3108781Z               "line": 419
2026-06-22T02:23:00.3109028Z             },
2026-06-22T02:23:00.3109187Z             {
2026-06-22T02:23:00.3109381Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3109624Z               "line": 436
2026-06-22T02:23:00.3109805Z             },
2026-06-22T02:23:00.3109969Z             {
2026-06-22T02:23:00.3110165Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3110408Z               "line": 472
2026-06-22T02:23:00.3110584Z             },
2026-06-22T02:23:00.3110752Z             {
2026-06-22T02:23:00.3110937Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.3111176Z               "line": 516
2026-06-22T02:23:00.3111357Z             },
2026-06-22T02:23:00.3111524Z             {
2026-06-22T02:23:00.3111706Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3111933Z               "line": 9614
2026-06-22T02:23:00.3112115Z             },
2026-06-22T02:23:00.3112273Z             {
2026-06-22T02:23:00.3112448Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3112667Z               "line": 9696
2026-06-22T02:23:00.3112857Z             }
2026-06-22T02:23:00.3113016Z           ]
2026-06-22T02:23:00.3113273Z         }
2026-06-22T02:23:00.3113426Z       }
2026-06-22T02:23:00.3113577Z     },
2026-06-22T02:23:00.3113830Z     {
2026-06-22T02:23:00.3114003Z       "id": "REQ-CONSENT-3",
2026-06-22T02:23:00.3116011Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-22T02:23:00.3117697Z       "requiredStages": [
2026-06-22T02:23:00.3117897Z         "doc",
2026-06-22T02:23:00.3117986Z         "impl",
2026-06-22T02:23:00.3118068Z         "unit",
2026-06-22T02:23:00.3118163Z         "int"
2026-06-22T02:23:00.3118244Z       ],
2026-06-22T02:23:00.3118339Z       "stages": {
2026-06-22T02:23:00.3118421Z         "doc": {
2026-06-22T02:23:00.3118516Z           "complete": true,
2026-06-22T02:23:00.3118610Z           "evidence": [
2026-06-22T02:23:00.3118682Z             {
2026-06-22T02:23:00.3118788Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.3118869Z               "line": 304
2026-06-22T02:23:00.3119041Z             }
2026-06-22T02:23:00.3119112Z           ]
2026-06-22T02:23:00.3119198Z         },
2026-06-22T02:23:00.3119283Z         "impl": {
2026-06-22T02:23:00.3119375Z           "complete": true,
2026-06-22T02:23:00.3119469Z           "evidence": [
2026-06-22T02:23:00.3119541Z             {
2026-06-22T02:23:00.3119666Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.3119752Z               "line": 123
2026-06-22T02:23:00.3119841Z             },
2026-06-22T02:23:00.3119927Z             {
2026-06-22T02:23:00.3120048Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.3120136Z               "line": 162
2026-06-22T02:23:00.3120226Z             },
2026-06-22T02:23:00.3120312Z             {
2026-06-22T02:23:00.3120421Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.3120510Z               "line": 291
2026-06-22T02:23:00.3120595Z             },
2026-06-22T02:23:00.3120677Z             {
2026-06-22T02:23:00.3120806Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.3120882Z               "line": 574
2026-06-22T02:23:00.3120968Z             },
2026-06-22T02:23:00.3121050Z             {
2026-06-22T02:23:00.3121173Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.3121264Z               "line": 824
2026-06-22T02:23:00.3121340Z             },
2026-06-22T02:23:00.3121417Z             {
2026-06-22T02:23:00.3121516Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3121617Z               "line": 6965
2026-06-22T02:23:00.3121698Z             }
2026-06-22T02:23:00.3121779Z           ]
2026-06-22T02:23:00.3121864Z         },
2026-06-22T02:23:00.3121947Z         "int": {
2026-06-22T02:23:00.3122045Z           "complete": true,
2026-06-22T02:23:00.3122136Z           "evidence": [
2026-06-22T02:23:00.3122223Z             {
2026-06-22T02:23:00.3122346Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T02:23:00.3122437Z               "line": 16
2026-06-22T02:23:00.3122523Z             }
2026-06-22T02:23:00.3122595Z           ]
2026-06-22T02:23:00.3122679Z         },
2026-06-22T02:23:00.3122766Z         "unit": {
2026-06-22T02:23:00.3122853Z           "complete": true,
2026-06-22T02:23:00.3122934Z           "evidence": [
2026-06-22T02:23:00.3123022Z             {
2026-06-22T02:23:00.3123141Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.3123228Z               "line": 1019
2026-06-22T02:23:00.3123319Z             },
2026-06-22T02:23:00.3123503Z             {
2026-06-22T02:23:00.3123623Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.3123804Z               "line": 1066
2026-06-22T02:23:00.3123881Z             },
2026-06-22T02:23:00.3123971Z             {
2026-06-22T02:23:00.3124085Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.3124182Z               "line": 1394
2026-06-22T02:23:00.3124262Z             }
2026-06-22T02:23:00.3124343Z           ]
2026-06-22T02:23:00.3124428Z         }
2026-06-22T02:23:00.3124511Z       }
2026-06-22T02:23:00.3124596Z     },
2026-06-22T02:23:00.3124672Z     {
2026-06-22T02:23:00.3124772Z       "id": "REQ-CONV-1",
2026-06-22T02:23:00.3126148Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-22T02:23:00.3126257Z       "requiredStages": [
2026-06-22T02:23:00.3126351Z         "impl",
2026-06-22T02:23:00.3126433Z         "unit"
2026-06-22T02:23:00.3126528Z       ],
2026-06-22T02:23:00.3126614Z       "stages": {
2026-06-22T02:23:00.3126700Z         "doc": {
2026-06-22T02:23:00.3126800Z           "complete": false,
2026-06-22T02:23:00.3126886Z           "evidence": []
2026-06-22T02:23:00.3126976Z         },
2026-06-22T02:23:00.3127058Z         "impl": {
2026-06-22T02:23:00.3127148Z           "complete": true,
2026-06-22T02:23:00.3127234Z           "evidence": [
2026-06-22T02:23:00.3127325Z             {
2026-06-22T02:23:00.3127440Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3127519Z               "line": 938
2026-06-22T02:23:00.3127610Z             },
2026-06-22T02:23:00.3127693Z             {
2026-06-22T02:23:00.3127820Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.3127911Z               "line": 94
2026-06-22T02:23:00.3127993Z             },
2026-06-22T02:23:00.3128079Z             {
2026-06-22T02:23:00.3128186Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.3128272Z               "line": 345
2026-06-22T02:23:00.3128358Z             },
2026-06-22T02:23:00.3128438Z             {
2026-06-22T02:23:00.3128556Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.3128652Z               "line": 387
2026-06-22T02:23:00.3128733Z             },
2026-06-22T02:23:00.3128818Z             {
2026-06-22T02:23:00.3128932Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.3129086Z               "line": 472
2026-06-22T02:23:00.3129170Z             },
2026-06-22T02:23:00.3129252Z             {
2026-06-22T02:23:00.3129386Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3129509Z               "line": 667
2026-06-22T02:23:00.3129601Z             },
2026-06-22T02:23:00.3129687Z             {
2026-06-22T02:23:00.3129814Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3129901Z               "line": 693
2026-06-22T02:23:00.3129987Z             },
2026-06-22T02:23:00.3130067Z             {
2026-06-22T02:23:00.3130196Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.3130278Z               "line": 369
2026-06-22T02:23:00.3130358Z             },
2026-06-22T02:23:00.3130439Z             {
2026-06-22T02:23:00.3130560Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:23:00.3130655Z               "line": 19
2026-06-22T02:23:00.3130734Z             }
2026-06-22T02:23:00.3130819Z           ]
2026-06-22T02:23:00.3130901Z         },
2026-06-22T02:23:00.3130981Z         "int": {
2026-06-22T02:23:00.3131075Z           "complete": false,
2026-06-22T02:23:00.3131170Z           "evidence": []
2026-06-22T02:23:00.3131366Z         },
2026-06-22T02:23:00.3131451Z         "unit": {
2026-06-22T02:23:00.3131533Z           "complete": true,
2026-06-22T02:23:00.3131704Z           "evidence": [
2026-06-22T02:23:00.3131785Z             {
2026-06-22T02:23:00.3131896Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3131991Z               "line": 1263
2026-06-22T02:23:00.3132071Z             },
2026-06-22T02:23:00.3132149Z             {
2026-06-22T02:23:00.3132262Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:23:00.3132348Z               "line": 108
2026-06-22T02:23:00.3132434Z             },
2026-06-22T02:23:00.3132507Z             {
2026-06-22T02:23:00.3132625Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:23:00.3132715Z               "line": 134
2026-06-22T02:23:00.3132797Z             },
2026-06-22T02:23:00.3132878Z             {
2026-06-22T02:23:00.3132982Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:23:00.3133078Z               "line": 144
2026-06-22T02:23:00.3133160Z             }
2026-06-22T02:23:00.3133249Z           ]
2026-06-22T02:23:00.3133335Z         }
2026-06-22T02:23:00.3133408Z       }
2026-06-22T02:23:00.3133494Z     },
2026-06-22T02:23:00.3133578Z     {
2026-06-22T02:23:00.3133668Z       "id": "REQ-CONV-2",
2026-06-22T02:23:00.3134737Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-22T02:23:00.3134832Z       "requiredStages": [
2026-06-22T02:23:00.3134912Z         "impl",
2026-06-22T02:23:00.3134998Z         "unit"
2026-06-22T02:23:00.3135076Z       ],
2026-06-22T02:23:00.3135156Z       "stages": {
2026-06-22T02:23:00.3135246Z         "doc": {
2026-06-22T02:23:00.3135347Z           "complete": false,
2026-06-22T02:23:00.3135437Z           "evidence": []
2026-06-22T02:23:00.3135523Z         },
2026-06-22T02:23:00.3135618Z         "impl": {
2026-06-22T02:23:00.3135715Z           "complete": true,
2026-06-22T02:23:00.3135804Z           "evidence": [
2026-06-22T02:23:00.3135884Z             {
2026-06-22T02:23:00.3136008Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3136089Z               "line": 409
2026-06-22T02:23:00.3136168Z             },
2026-06-22T02:23:00.3136248Z             {
2026-06-22T02:23:00.3136383Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:23:00.3136473Z               "line": 119
2026-06-22T02:23:00.3136563Z             },
2026-06-22T02:23:00.3136650Z             {
2026-06-22T02:23:00.3136779Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3136878Z               "line": 841
2026-06-22T02:23:00.3136960Z             },
2026-06-22T02:23:00.3137046Z             {
2026-06-22T02:23:00.3137174Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3137280Z               "line": 852
2026-06-22T02:23:00.3137370Z             },
2026-06-22T02:23:00.3137451Z             {
2026-06-22T02:23:00.3137575Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.3137661Z               "line": 334
2026-06-22T02:23:00.3137780Z             },
2026-06-22T02:23:00.3137860Z             {
2026-06-22T02:23:00.3137966Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3138056Z               "line": 3074
2026-06-22T02:23:00.3138133Z             },
2026-06-22T02:23:00.3138214Z             {
2026-06-22T02:23:00.3138315Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3138399Z               "line": 3090
2026-06-22T02:23:00.3138476Z             },
2026-06-22T02:23:00.3138563Z             {
2026-06-22T02:23:00.3138667Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3138756Z               "line": 3170
2026-06-22T02:23:00.3138918Z             }
2026-06-22T02:23:00.3139064Z           ]
2026-06-22T02:23:00.3139240Z         },
2026-06-22T02:23:00.3139327Z         "int": {
2026-06-22T02:23:00.3139421Z           "complete": false,
2026-06-22T02:23:00.3139512Z           "evidence": []
2026-06-22T02:23:00.3139599Z         },
2026-06-22T02:23:00.3139679Z         "unit": {
2026-06-22T02:23:00.3139759Z           "complete": true,
2026-06-22T02:23:00.3139837Z           "evidence": [
2026-06-22T02:23:00.3139923Z             {
2026-06-22T02:23:00.3140046Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3140136Z               "line": 889
2026-06-22T02:23:00.3140218Z             },
2026-06-22T02:23:00.3140303Z             {
2026-06-22T02:23:00.3140418Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3140505Z               "line": 1014
2026-06-22T02:23:00.3140590Z             },
2026-06-22T02:23:00.3140680Z             {
2026-06-22T02:23:00.3140824Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:23:00.3140905Z               "line": 215
2026-06-22T02:23:00.3140995Z             }
2026-06-22T02:23:00.3141076Z           ]
2026-06-22T02:23:00.3141158Z         }
2026-06-22T02:23:00.3141243Z       }
2026-06-22T02:23:00.3141332Z     },
2026-06-22T02:23:00.3141418Z     {
2026-06-22T02:23:00.3141514Z       "id": "REQ-DAEMON-1",
2026-06-22T02:23:00.3141673Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-22T02:23:00.3141764Z       "requiredStages": [
2026-06-22T02:23:00.3141845Z         "impl",
2026-06-22T02:23:00.3141931Z         "unit",
2026-06-22T02:23:00.3142021Z         "int"
2026-06-22T02:23:00.3142103Z       ],
2026-06-22T02:23:00.3142188Z       "stages": {
2026-06-22T02:23:00.3142274Z         "doc": {
2026-06-22T02:23:00.3142369Z           "complete": false,
2026-06-22T02:23:00.3142461Z           "evidence": []
2026-06-22T02:23:00.3142547Z         },
2026-06-22T02:23:00.3142636Z         "impl": {
2026-06-22T02:23:00.3142733Z           "complete": true,
2026-06-22T02:23:00.3142827Z           "evidence": [
2026-06-22T02:23:00.3142917Z             {
2026-06-22T02:23:00.3143038Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3143124Z               "line": 229
2026-06-22T02:23:00.3143209Z             },
2026-06-22T02:23:00.3143285Z             {
2026-06-22T02:23:00.3143405Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.3143490Z               "line": 12
2026-06-22T02:23:00.3143580Z             },
2026-06-22T02:23:00.3143663Z             {
2026-06-22T02:23:00.3143786Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3143872Z               "line": 16
2026-06-22T02:23:00.3143953Z             },
2026-06-22T02:23:00.3144045Z             {
2026-06-22T02:23:00.3144152Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3144247Z               "line": 309
2026-06-22T02:23:00.3144323Z             },
2026-06-22T02:23:00.3144405Z             {
2026-06-22T02:23:00.3144523Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3144609Z               "line": 24
2026-06-22T02:23:00.3144904Z             },
2026-06-22T02:23:00.3145053Z             {
2026-06-22T02:23:00.3152130Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3152243Z               "line": 262
2026-06-22T02:23:00.3152329Z             },
2026-06-22T02:23:00.3152401Z             {
2026-06-22T02:23:00.3152533Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3152639Z               "line": 279
2026-06-22T02:23:00.3152744Z             },
2026-06-22T02:23:00.3152829Z             {
2026-06-22T02:23:00.3152954Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3153040Z               "line": 356
2026-06-22T02:23:00.3153121Z             },
2026-06-22T02:23:00.3153201Z             {
2026-06-22T02:23:00.3153312Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3153588Z               "line": 670
2026-06-22T02:23:00.3153674Z             },
2026-06-22T02:23:00.3153855Z             {
2026-06-22T02:23:00.3153975Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:23:00.3154059Z               "line": 15
2026-06-22T02:23:00.3154140Z             },
2026-06-22T02:23:00.3154223Z             {
2026-06-22T02:23:00.3154351Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3154437Z               "line": 241
2026-06-22T02:23:00.3154518Z             },
2026-06-22T02:23:00.3154600Z             {
2026-06-22T02:23:00.3154703Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T02:23:00.3154793Z               "line": 13
2026-06-22T02:23:00.3154869Z             },
2026-06-22T02:23:00.3154956Z             {
2026-06-22T02:23:00.3155079Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3155155Z               "line": 382
2026-06-22T02:23:00.3155247Z             },
2026-06-22T02:23:00.3155328Z             {
2026-06-22T02:23:00.3155446Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3155543Z               "line": 494
2026-06-22T02:23:00.3155623Z             }
2026-06-22T02:23:00.3155713Z           ]
2026-06-22T02:23:00.3155794Z         },
2026-06-22T02:23:00.3155881Z         "int": {
2026-06-22T02:23:00.3155975Z           "complete": true,
2026-06-22T02:23:00.3156070Z           "evidence": [
2026-06-22T02:23:00.3156153Z             {
2026-06-22T02:23:00.3156324Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T02:23:00.3156409Z               "line": 2
2026-06-22T02:23:00.3156492Z             },
2026-06-22T02:23:00.3156577Z             {
2026-06-22T02:23:00.3156724Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T02:23:00.3156811Z               "line": 16
2026-06-22T02:23:00.3156896Z             },
2026-06-22T02:23:00.3156981Z             {
2026-06-22T02:23:00.3157123Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-22T02:23:00.3157213Z               "line": 12
2026-06-22T02:23:00.3157307Z             },
2026-06-22T02:23:00.3157378Z             {
2026-06-22T02:23:00.3157503Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-22T02:23:00.3157589Z               "line": 12
2026-06-22T02:23:00.3157679Z             },
2026-06-22T02:23:00.3157765Z             {
2026-06-22T02:23:00.3157890Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:23:00.3157975Z               "line": 44
2026-06-22T02:23:00.3158051Z             }
2026-06-22T02:23:00.3158137Z           ]
2026-06-22T02:23:00.3158218Z         },
2026-06-22T02:23:00.3158289Z         "unit": {
2026-06-22T02:23:00.3158385Z           "complete": true,
2026-06-22T02:23:00.3158462Z           "evidence": [
2026-06-22T02:23:00.3158552Z             {
2026-06-22T02:23:00.3158661Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.3158758Z               "line": 285
2026-06-22T02:23:00.3158838Z             },
2026-06-22T02:23:00.3158924Z             {
2026-06-22T02:23:00.3159120Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.3159205Z               "line": 293
2026-06-22T02:23:00.3159281Z             },
2026-06-22T02:23:00.3159364Z             {
2026-06-22T02:23:00.3159481Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.3159572Z               "line": 309
2026-06-22T02:23:00.3159654Z             },
2026-06-22T02:23:00.3159735Z             {
2026-06-22T02:23:00.3159848Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.3159938Z               "line": 317
2026-06-22T02:23:00.3160015Z             },
2026-06-22T02:23:00.3160099Z             {
2026-06-22T02:23:00.3160222Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3160303Z               "line": 659
2026-06-22T02:23:00.3160395Z             },
2026-06-22T02:23:00.3160579Z             {
2026-06-22T02:23:00.3160695Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3160866Z               "line": 729
2026-06-22T02:23:00.3160947Z             },
2026-06-22T02:23:00.3161029Z             {
2026-06-22T02:23:00.3161142Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3161228Z               "line": 1211
2026-06-22T02:23:00.3161306Z             },
2026-06-22T02:23:00.3161390Z             {
2026-06-22T02:23:00.3161500Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3161591Z               "line": 1248
2026-06-22T02:23:00.3161677Z             },
2026-06-22T02:23:00.3161757Z             {
2026-06-22T02:23:00.3161867Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3161954Z               "line": 1271
2026-06-22T02:23:00.3162039Z             },
2026-06-22T02:23:00.3162115Z             {
2026-06-22T02:23:00.3162231Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3162331Z               "line": 1300
2026-06-22T02:23:00.3162410Z             },
2026-06-22T02:23:00.3162500Z             {
2026-06-22T02:23:00.3162610Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3162694Z               "line": 1348
2026-06-22T02:23:00.3162774Z             },
2026-06-22T02:23:00.3162855Z             {
2026-06-22T02:23:00.3162975Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3163066Z               "line": 1391
2026-06-22T02:23:00.3163136Z             },
2026-06-22T02:23:00.3163214Z             {
2026-06-22T02:23:00.3163328Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:23:00.3163413Z               "line": 106
2026-06-22T02:23:00.3163494Z             },
2026-06-22T02:23:00.3163581Z             {
2026-06-22T02:23:00.3163691Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:23:00.3163809Z               "line": 132
2026-06-22T02:23:00.3163943Z             },
2026-06-22T02:23:00.3164029Z             {
2026-06-22T02:23:00.3164143Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3164234Z               "line": 530
2026-06-22T02:23:00.3164315Z             }
2026-06-22T02:23:00.3164390Z           ]
2026-06-22T02:23:00.3164468Z         }
2026-06-22T02:23:00.3164549Z       }
2026-06-22T02:23:00.3164633Z     },
2026-06-22T02:23:00.3164701Z     {
2026-06-22T02:23:00.3164798Z       "id": "REQ-DAEMON-2",
2026-06-22T02:23:00.3164934Z       "title": "Broker/brain split for seamless self-update",
2026-06-22T02:23:00.3165030Z       "requiredStages": [
2026-06-22T02:23:00.3165112Z         "impl",
2026-06-22T02:23:00.3165198Z         "unit",
2026-06-22T02:23:00.3165277Z         "int"
2026-06-22T02:23:00.3165358Z       ],
2026-06-22T02:23:00.3165444Z       "stages": {
2026-06-22T02:23:00.3165525Z         "doc": {
2026-06-22T02:23:00.3165620Z           "complete": true,
2026-06-22T02:23:00.3165710Z           "evidence": [
2026-06-22T02:23:00.3165787Z             {
2026-06-22T02:23:00.3165912Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-22T02:23:00.3166006Z               "line": 250
2026-06-22T02:23:00.3166083Z             }
2026-06-22T02:23:00.3166178Z           ]
2026-06-22T02:23:00.3166259Z         },
2026-06-22T02:23:00.3166350Z         "impl": {
2026-06-22T02:23:00.3166436Z           "complete": true,
2026-06-22T02:23:00.3166531Z           "evidence": [
2026-06-22T02:23:00.3166611Z             {
2026-06-22T02:23:00.3166732Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3166817Z               "line": 23
2026-06-22T02:23:00.3166898Z             },
2026-06-22T02:23:00.3166969Z             {
2026-06-22T02:23:00.3167080Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3167160Z               "line": 922
2026-06-22T02:23:00.3167246Z             },
2026-06-22T02:23:00.3167322Z             {
2026-06-22T02:23:00.3167433Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3167593Z               "line": 963
2026-06-22T02:23:00.3167670Z             },
2026-06-22T02:23:00.3167751Z             {
2026-06-22T02:23:00.3167938Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3168020Z               "line": 1199
2026-06-22T02:23:00.3168102Z             },
2026-06-22T02:23:00.3168182Z             {
2026-06-22T02:23:00.3168287Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3168374Z               "line": 32
2026-06-22T02:23:00.3168455Z             },
2026-06-22T02:23:00.3168539Z             {
2026-06-22T02:23:00.3168650Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3168735Z               "line": 1151
2026-06-22T02:23:00.3168816Z             },
2026-06-22T02:23:00.3168897Z             {
2026-06-22T02:23:00.3169074Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3169159Z               "line": 1865
2026-06-22T02:23:00.3169240Z             },
2026-06-22T02:23:00.3169332Z             {
2026-06-22T02:23:00.3169455Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3169550Z               "line": 2152
2026-06-22T02:23:00.3169628Z             },
2026-06-22T02:23:00.3169703Z             {
2026-06-22T02:23:00.3169808Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:23:00.3169895Z               "line": 11
2026-06-22T02:23:00.3169981Z             },
2026-06-22T02:23:00.3170060Z             {
2026-06-22T02:23:00.3170166Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3170248Z               "line": 153
2026-06-22T02:23:00.3170333Z             },
2026-06-22T02:23:00.3170413Z             {
2026-06-22T02:23:00.3170522Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3170604Z               "line": 343
2026-06-22T02:23:00.3170687Z             },
2026-06-22T02:23:00.3170773Z             {
2026-06-22T02:23:00.3170877Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3170969Z               "line": 13
2026-06-22T02:23:00.3171054Z             },
2026-06-22T02:23:00.3171134Z             {
2026-06-22T02:23:00.3171260Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3171345Z               "line": 27
2026-06-22T02:23:00.3171431Z             },
2026-06-22T02:23:00.3171502Z             {
2026-06-22T02:23:00.3171617Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3171698Z               "line": 147
2026-06-22T02:23:00.3171783Z             },
2026-06-22T02:23:00.3171871Z             {
2026-06-22T02:23:00.3171974Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3172070Z               "line": 632
2026-06-22T02:23:00.3172151Z             },
2026-06-22T02:23:00.3172237Z             {
2026-06-22T02:23:00.3172341Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3172437Z               "line": 853
2026-06-22T02:23:00.3172519Z             },
2026-06-22T02:23:00.3172599Z             {
2026-06-22T02:23:00.3172704Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3172781Z               "line": 1000
2026-06-22T02:23:00.3172862Z             },
2026-06-22T02:23:00.3172951Z             {
2026-06-22T02:23:00.3173055Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3173142Z               "line": 1089
2026-06-22T02:23:00.3173222Z             },
2026-06-22T02:23:00.3173311Z             {
2026-06-22T02:23:00.3173411Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3173502Z               "line": 1211
2026-06-22T02:23:00.3173583Z             },
2026-06-22T02:23:00.3173663Z             {
2026-06-22T02:23:00.3173817Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:23:00.3173903Z               "line": 10
2026-06-22T02:23:00.3174001Z             }
2026-06-22T02:23:00.3174084Z           ]
2026-06-22T02:23:00.3174160Z         },
2026-06-22T02:23:00.3174241Z         "int": {
2026-06-22T02:23:00.3174427Z           "complete": true,
2026-06-22T02:23:00.3174517Z           "evidence": [
2026-06-22T02:23:00.3174679Z             {
2026-06-22T02:23:00.3174785Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.3174870Z               "line": 17
2026-06-22T02:23:00.3174955Z             },
2026-06-22T02:23:00.3175038Z             {
2026-06-22T02:23:00.3175161Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:23:00.3175247Z               "line": 90
2026-06-22T02:23:00.3175328Z             },
2026-06-22T02:23:00.3175410Z             {
2026-06-22T02:23:00.3175532Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:23:00.3175614Z               "line": 110
2026-06-22T02:23:00.3175701Z             },
2026-06-22T02:23:00.3175786Z             {
2026-06-22T02:23:00.3175904Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:23:00.3175989Z               "line": 186
2026-06-22T02:23:00.3176076Z             },
2026-06-22T02:23:00.3176157Z             {
2026-06-22T02:23:00.3176275Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:23:00.3176382Z               "line": 309
2026-06-22T02:23:00.3176458Z             },
2026-06-22T02:23:00.3176542Z             {
2026-06-22T02:23:00.3176658Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T02:23:00.3176748Z               "line": 128
2026-06-22T02:23:00.3176829Z             },
2026-06-22T02:23:00.3176915Z             {
2026-06-22T02:23:00.3177030Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:23:00.3177115Z               "line": 59
2026-06-22T02:23:00.3177190Z             }
2026-06-22T02:23:00.3177268Z           ]
2026-06-22T02:23:00.3177359Z         },
2026-06-22T02:23:00.3177439Z         "unit": {
2026-06-22T02:23:00.3177525Z           "complete": true,
2026-06-22T02:23:00.3177616Z           "evidence": [
2026-06-22T02:23:00.3177707Z             {
2026-06-22T02:23:00.3177830Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:23:00.3177912Z               "line": 62
2026-06-22T02:23:00.3178003Z             },
2026-06-22T02:23:00.3178082Z             {
2026-06-22T02:23:00.3178191Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:23:00.3178277Z               "line": 76
2026-06-22T02:23:00.3178362Z             },
2026-06-22T02:23:00.3178442Z             {
2026-06-22T02:23:00.3178542Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:23:00.3178633Z               "line": 88
2026-06-22T02:23:00.3178714Z             },
2026-06-22T02:23:00.3178794Z             {
2026-06-22T02:23:00.3178900Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3179263Z               "line": 347
2026-06-22T02:23:00.3179353Z             },
2026-06-22T02:23:00.3179428Z             {
2026-06-22T02:23:00.3179554Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3179639Z               "line": 901
2026-06-22T02:23:00.3179733Z             },
2026-06-22T02:23:00.3179820Z             {
2026-06-22T02:23:00.3179921Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3180006Z               "line": 909
2026-06-22T02:23:00.3180087Z             },
2026-06-22T02:23:00.3180179Z             {
2026-06-22T02:23:00.3180287Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3180363Z               "line": 926
2026-06-22T02:23:00.3180435Z             },
2026-06-22T02:23:00.3180518Z             {
2026-06-22T02:23:00.3180620Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3180697Z               "line": 1035
2026-06-22T02:23:00.3180775Z             },
2026-06-22T02:23:00.3180866Z             {
2026-06-22T02:23:00.3180978Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3181053Z               "line": 1282
2026-06-22T02:23:00.3181135Z             },
2026-06-22T02:23:00.3181215Z             {
2026-06-22T02:23:00.3181319Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3181519Z               "line": 1294
2026-06-22T02:23:00.3181695Z             },
2026-06-22T02:23:00.3181767Z             {
2026-06-22T02:23:00.3181891Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:23:00.3181976Z               "line": 110
2026-06-22T02:23:00.3182063Z             },
2026-06-22T02:23:00.3182144Z             {
2026-06-22T02:23:00.3182262Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:23:00.3182343Z               "line": 145
2026-06-22T02:23:00.3182426Z             }
2026-06-22T02:23:00.3182506Z           ]
2026-06-22T02:23:00.3182587Z         }
2026-06-22T02:23:00.3182668Z       }
2026-06-22T02:23:00.3182750Z     },
2026-06-22T02:23:00.3182835Z     {
2026-06-22T02:23:00.3182920Z       "id": "REQ-DAEMON-3",
2026-06-22T02:23:00.3183075Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-22T02:23:00.3183164Z       "requiredStages": [
2026-06-22T02:23:00.3183259Z         "impl",
2026-06-22T02:23:00.3183337Z         "unit",
2026-06-22T02:23:00.3183418Z         "int"
2026-06-22T02:23:00.3183507Z       ],
2026-06-22T02:23:00.3183601Z       "stages": {
2026-06-22T02:23:00.3183682Z         "doc": {
2026-06-22T02:23:00.3183777Z           "complete": false,
2026-06-22T02:23:00.3183866Z           "evidence": []
2026-06-22T02:23:00.3183947Z         },
2026-06-22T02:23:00.3184029Z         "impl": {
2026-06-22T02:23:00.3184115Z           "complete": true,
2026-06-22T02:23:00.3184205Z           "evidence": [
2026-06-22T02:23:00.3184286Z             {
2026-06-22T02:23:00.3184406Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3184491Z               "line": 14
2026-06-22T02:23:00.3184571Z             },
2026-06-22T02:23:00.3184644Z             {
2026-06-22T02:23:00.3184763Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:23:00.3184853Z               "line": 11
2026-06-22T02:23:00.3184930Z             },
2026-06-22T02:23:00.3185011Z             {
2026-06-22T02:23:00.3185115Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.3185210Z               "line": 305
2026-06-22T02:23:00.3185293Z             },
2026-06-22T02:23:00.3185378Z             {
2026-06-22T02:23:00.3185483Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3185569Z               "line": 1956
2026-06-22T02:23:00.3185646Z             },
2026-06-22T02:23:00.3185726Z             {
2026-06-22T02:23:00.3185826Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3185908Z               "line": 4235
2026-06-22T02:23:00.3185994Z             },
2026-06-22T02:23:00.3186083Z             {
2026-06-22T02:23:00.3186179Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3186266Z               "line": 4256
2026-06-22T02:23:00.3186351Z             }
2026-06-22T02:23:00.3186435Z           ]
2026-06-22T02:23:00.3186516Z         },
2026-06-22T02:23:00.3186607Z         "int": {
2026-06-22T02:23:00.3186708Z           "complete": true,
2026-06-22T02:23:00.3186792Z           "evidence": [
2026-06-22T02:23:00.3186879Z             {
2026-06-22T02:23:00.3186993Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.3187074Z               "line": 49
2026-06-22T02:23:00.3187160Z             },
2026-06-22T02:23:00.3187242Z             {
2026-06-22T02:23:00.3187361Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.3187441Z               "line": 487
2026-06-22T02:23:00.3187523Z             }
2026-06-22T02:23:00.3187604Z           ]
2026-06-22T02:23:00.3187695Z         },
2026-06-22T02:23:00.3187780Z         "unit": {
2026-06-22T02:23:00.3187866Z           "complete": true,
2026-06-22T02:23:00.3187947Z           "evidence": [
2026-06-22T02:23:00.3188028Z             {
2026-06-22T02:23:00.3188143Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3188224Z               "line": 1553
2026-06-22T02:23:00.3188304Z             },
2026-06-22T02:23:00.3188467Z             {
2026-06-22T02:23:00.3188558Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3188723Z               "line": 10715
2026-06-22T02:23:00.3188804Z             }
2026-06-22T02:23:00.3188885Z           ]
2026-06-22T02:23:00.3189021Z         }
2026-06-22T02:23:00.3189112Z       }
2026-06-22T02:23:00.3189198Z     },
2026-06-22T02:23:00.3189279Z     {
2026-06-22T02:23:00.3189378Z       "id": "REQ-DAEMON-4",
2026-06-22T02:23:00.3189494Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-22T02:23:00.3189580Z       "requiredStages": [
2026-06-22T02:23:00.3189664Z         "impl",
2026-06-22T02:23:00.3189756Z         "unit",
2026-06-22T02:23:00.3189837Z         "int"
2026-06-22T02:23:00.3189913Z       ],
2026-06-22T02:23:00.3189998Z       "stages": {
2026-06-22T02:23:00.3190080Z         "doc": {
2026-06-22T02:23:00.3190185Z           "complete": false,
2026-06-22T02:23:00.3190270Z           "evidence": []
2026-06-22T02:23:00.3190361Z         },
2026-06-22T02:23:00.3190448Z         "impl": {
2026-06-22T02:23:00.3190547Z           "complete": true,
2026-06-22T02:23:00.3190642Z           "evidence": [
2026-06-22T02:23:00.3190734Z             {
2026-06-22T02:23:00.3190852Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3190937Z               "line": 464
2026-06-22T02:23:00.3191015Z             },
2026-06-22T02:23:00.3191092Z             {
2026-06-22T02:23:00.3191219Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3191310Z               "line": 529
2026-06-22T02:23:00.3191392Z             },
2026-06-22T02:23:00.3191477Z             {
2026-06-22T02:23:00.3191590Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3191671Z               "line": 551
2026-06-22T02:23:00.3191757Z             }
2026-06-22T02:23:00.3191836Z           ]
2026-06-22T02:23:00.3191917Z         },
2026-06-22T02:23:00.3191998Z         "int": {
2026-06-22T02:23:00.3192089Z           "complete": true,
2026-06-22T02:23:00.3192179Z           "evidence": [
2026-06-22T02:23:00.3192260Z             {
2026-06-22T02:23:00.3192380Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T02:23:00.3192470Z               "line": 42
2026-06-22T02:23:00.3192555Z             }
2026-06-22T02:23:00.3192637Z           ]
2026-06-22T02:23:00.3192718Z         },
2026-06-22T02:23:00.3192804Z         "unit": {
2026-06-22T02:23:00.3192884Z           "complete": true,
2026-06-22T02:23:00.3192981Z           "evidence": [
2026-06-22T02:23:00.3193061Z             {
2026-06-22T02:23:00.3193175Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.3193257Z               "line": 428
2026-06-22T02:23:00.3193339Z             },
2026-06-22T02:23:00.3193423Z             {
2026-06-22T02:23:00.3193533Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3193615Z               "line": 957
2026-06-22T02:23:00.3193696Z             },
2026-06-22T02:23:00.3193776Z             {
2026-06-22T02:23:00.3193897Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3193973Z               "line": 1027
2026-06-22T02:23:00.3194067Z             },
2026-06-22T02:23:00.3194152Z             {
2026-06-22T02:23:00.3194267Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3194356Z               "line": 1057
2026-06-22T02:23:00.3194431Z             },
2026-06-22T02:23:00.3194507Z             {
2026-06-22T02:23:00.3194622Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3194703Z               "line": 1090
2026-06-22T02:23:00.3194798Z             }
2026-06-22T02:23:00.3194894Z           ]
2026-06-22T02:23:00.3194980Z         }
2026-06-22T02:23:00.3195065Z       }
2026-06-22T02:23:00.3195146Z     },
2026-06-22T02:23:00.3195224Z     {
2026-06-22T02:23:00.3195304Z       "id": "REQ-DAEMON-5",
2026-06-22T02:23:00.3196653Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-22T02:23:00.3196939Z       "requiredStages": [
2026-06-22T02:23:00.3197028Z         "impl",
2026-06-22T02:23:00.3197114Z         "unit"
2026-06-22T02:23:00.3197197Z       ],
2026-06-22T02:23:00.3197286Z       "stages": {
2026-06-22T02:23:00.3197367Z         "doc": {
2026-06-22T02:23:00.3197449Z           "complete": false,
2026-06-22T02:23:00.3197540Z           "evidence": []
2026-06-22T02:23:00.3197620Z         },
2026-06-22T02:23:00.3197710Z         "impl": {
2026-06-22T02:23:00.3197797Z           "complete": true,
2026-06-22T02:23:00.3197887Z           "evidence": [
2026-06-22T02:23:00.3197963Z             {
2026-06-22T02:23:00.3198088Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3198188Z               "line": 476
2026-06-22T02:23:00.3198269Z             },
2026-06-22T02:23:00.3198364Z             {
2026-06-22T02:23:00.3198484Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3198574Z               "line": 769
2026-06-22T02:23:00.3198654Z             },
2026-06-22T02:23:00.3198737Z             {
2026-06-22T02:23:00.3198864Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3199037Z               "line": 782
2026-06-22T02:23:00.3199123Z             },
2026-06-22T02:23:00.3199198Z             {
2026-06-22T02:23:00.3199312Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3199402Z               "line": 800
2026-06-22T02:23:00.3199482Z             },
2026-06-22T02:23:00.3199562Z             {
2026-06-22T02:23:00.3199672Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3199772Z               "line": 841
2026-06-22T02:23:00.3199863Z             }
2026-06-22T02:23:00.3199943Z           ]
2026-06-22T02:23:00.3200025Z         },
2026-06-22T02:23:00.3200106Z         "int": {
2026-06-22T02:23:00.3200210Z           "complete": false,
2026-06-22T02:23:00.3200296Z           "evidence": []
2026-06-22T02:23:00.3200388Z         },
2026-06-22T02:23:00.3200473Z         "unit": {
2026-06-22T02:23:00.3200572Z           "complete": true,
2026-06-22T02:23:00.3200655Z           "evidence": [
2026-06-22T02:23:00.3200736Z             {
2026-06-22T02:23:00.3200854Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3200930Z               "line": 1189
2026-06-22T02:23:00.3201022Z             },
2026-06-22T02:23:00.3201102Z             {
2026-06-22T02:23:00.3201212Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3201308Z               "line": 1213
2026-06-22T02:23:00.3201389Z             },
2026-06-22T02:23:00.3201475Z             {
2026-06-22T02:23:00.3201575Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3201680Z               "line": 1239
2026-06-22T02:23:00.3201764Z             }
2026-06-22T02:23:00.3201851Z           ]
2026-06-22T02:23:00.3201929Z         }
2026-06-22T02:23:00.3202014Z       }
2026-06-22T02:23:00.3202098Z     },
2026-06-22T02:23:00.3202179Z     {
2026-06-22T02:23:00.3202269Z       "id": "REQ-DAEMON-6",
2026-06-22T02:23:00.3204175Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-22T02:23:00.3204384Z       "requiredStages": [
2026-06-22T02:23:00.3204467Z         "impl",
2026-06-22T02:23:00.3204655Z         "unit"
2026-06-22T02:23:00.3204735Z       ],
2026-06-22T02:23:00.3204822Z       "stages": {
2026-06-22T02:23:00.3204911Z         "doc": {
2026-06-22T02:23:00.3205006Z           "complete": false,
2026-06-22T02:23:00.3205081Z           "evidence": []
2026-06-22T02:23:00.3205158Z         },
2026-06-22T02:23:00.3205245Z         "impl": {
2026-06-22T02:23:00.3205329Z           "complete": true,
2026-06-22T02:23:00.3205416Z           "evidence": [
2026-06-22T02:23:00.3205497Z             {
2026-06-22T02:23:00.3205611Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3205692Z               "line": 495
2026-06-22T02:23:00.3205774Z             },
2026-06-22T02:23:00.3205854Z             {
2026-06-22T02:23:00.3205963Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3206045Z               "line": 526
2026-06-22T02:23:00.3206127Z             },
2026-06-22T02:23:00.3206217Z             {
2026-06-22T02:23:00.3206322Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3206418Z               "line": 55
2026-06-22T02:23:00.3206508Z             },
2026-06-22T02:23:00.3206593Z             {
2026-06-22T02:23:00.3206713Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3206803Z               "line": 70
2026-06-22T02:23:00.3206889Z             },
2026-06-22T02:23:00.3206970Z             {
2026-06-22T02:23:00.3207077Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3207165Z               "line": 2020
2026-06-22T02:23:00.3207247Z             },
2026-06-22T02:23:00.3207334Z             {
2026-06-22T02:23:00.3207438Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3207527Z               "line": 2046
2026-06-22T02:23:00.3207612Z             }
2026-06-22T02:23:00.3207699Z           ]
2026-06-22T02:23:00.3207790Z         },
2026-06-22T02:23:00.3207875Z         "int": {
2026-06-22T02:23:00.3207970Z           "complete": false,
2026-06-22T02:23:00.3208057Z           "evidence": []
2026-06-22T02:23:00.3208147Z         },
2026-06-22T02:23:00.3208232Z         "unit": {
2026-06-22T02:23:00.3208324Z           "complete": true,
2026-06-22T02:23:00.3208414Z           "evidence": [
2026-06-22T02:23:00.3208490Z             {
2026-06-22T02:23:00.3208610Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3208691Z               "line": 288
2026-06-22T02:23:00.3208781Z             },
2026-06-22T02:23:00.3208862Z             {
2026-06-22T02:23:00.3209053Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3209148Z               "line": 299
2026-06-22T02:23:00.3209224Z             },
2026-06-22T02:23:00.3209307Z             {
2026-06-22T02:23:00.3209415Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3209506Z               "line": 325
2026-06-22T02:23:00.3209587Z             },
2026-06-22T02:23:00.3209673Z             {
2026-06-22T02:23:00.3209796Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3209886Z               "line": 351
2026-06-22T02:23:00.3209962Z             }
2026-06-22T02:23:00.3210047Z           ]
2026-06-22T02:23:00.3210131Z         }
2026-06-22T02:23:00.3210212Z       }
2026-06-22T02:23:00.3210299Z     },
2026-06-22T02:23:00.3210385Z     {
2026-06-22T02:23:00.3210479Z       "id": "REQ-DAEMON-7",
2026-06-22T02:23:00.3211840Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-22T02:23:00.3211935Z       "requiredStages": [
2026-06-22T02:23:00.3212130Z         "impl",
2026-06-22T02:23:00.3212212Z         "unit"
2026-06-22T02:23:00.3212378Z       ],
2026-06-22T02:23:00.3212455Z       "stages": {
2026-06-22T02:23:00.3212536Z         "doc": {
2026-06-22T02:23:00.3212635Z           "complete": false,
2026-06-22T02:23:00.3212720Z           "evidence": []
2026-06-22T02:23:00.3212801Z         },
2026-06-22T02:23:00.3212886Z         "impl": {
2026-06-22T02:23:00.3212961Z           "complete": true,
2026-06-22T02:23:00.3213051Z           "evidence": [
2026-06-22T02:23:00.3213133Z             {
2026-06-22T02:23:00.3213248Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3213332Z               "line": 545
2026-06-22T02:23:00.3213423Z             },
2026-06-22T02:23:00.3213505Z             {
2026-06-22T02:23:00.3213628Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3213714Z               "line": 610
2026-06-22T02:23:00.3213796Z             },
2026-06-22T02:23:00.3213891Z             {
2026-06-22T02:23:00.3213995Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3214092Z               "line": 89
2026-06-22T02:23:00.3214177Z             },
2026-06-22T02:23:00.3214249Z             {
2026-06-22T02:23:00.3214363Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3214440Z               "line": 1957
2026-06-22T02:23:00.3214525Z             }
2026-06-22T02:23:00.3214606Z           ]
2026-06-22T02:23:00.3214687Z         },
2026-06-22T02:23:00.3214774Z         "int": {
2026-06-22T02:23:00.3214858Z           "complete": false,
2026-06-22T02:23:00.3214944Z           "evidence": []
2026-06-22T02:23:00.3215027Z         },
2026-06-22T02:23:00.3215108Z         "unit": {
2026-06-22T02:23:00.3215196Z           "complete": true,
2026-06-22T02:23:00.3215287Z           "evidence": [
2026-06-22T02:23:00.3215377Z             {
2026-06-22T02:23:00.3215495Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3215580Z               "line": 314
2026-06-22T02:23:00.3215656Z             },
2026-06-22T02:23:00.3215733Z             {
2026-06-22T02:23:00.3215852Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3215942Z               "line": 8102
2026-06-22T02:23:00.3216029Z             }
2026-06-22T02:23:00.3216109Z           ]
2026-06-22T02:23:00.3216199Z         }
2026-06-22T02:23:00.3216280Z       }
2026-06-22T02:23:00.3216368Z     },
2026-06-22T02:23:00.3216443Z     {
2026-06-22T02:23:00.3216538Z       "id": "REQ-DAEMON-8",
2026-06-22T02:23:00.3217492Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-22T02:23:00.3217589Z       "requiredStages": [
2026-06-22T02:23:00.3217679Z         "impl",
2026-06-22T02:23:00.3217754Z         "unit"
2026-06-22T02:23:00.3217840Z       ],
2026-06-22T02:23:00.3217932Z       "stages": {
2026-06-22T02:23:00.3218017Z         "doc": {
2026-06-22T02:23:00.3218121Z           "complete": false,
2026-06-22T02:23:00.3218211Z           "evidence": []
2026-06-22T02:23:00.3218288Z         },
2026-06-22T02:23:00.3221174Z         "impl": {
2026-06-22T02:23:00.3221283Z           "complete": true,
2026-06-22T02:23:00.3221363Z           "evidence": [
2026-06-22T02:23:00.3221446Z             {
2026-06-22T02:23:00.3221579Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3221665Z               "line": 445
2026-06-22T02:23:00.3221746Z             },
2026-06-22T02:23:00.3221823Z             {
2026-06-22T02:23:00.3221960Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3222056Z               "line": 56
2026-06-22T02:23:00.3222132Z             }
2026-06-22T02:23:00.3222208Z           ]
2026-06-22T02:23:00.3222275Z         },
2026-06-22T02:23:00.3222361Z         "int": {
2026-06-22T02:23:00.3222595Z           "complete": false,
2026-06-22T02:23:00.3222676Z           "evidence": []
2026-06-22T02:23:00.3222847Z         },
2026-06-22T02:23:00.3222929Z         "unit": {
2026-06-22T02:23:00.3223015Z           "complete": true,
2026-06-22T02:23:00.3223096Z           "evidence": [
2026-06-22T02:23:00.3223181Z             {
2026-06-22T02:23:00.3223299Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3223385Z               "line": 288
2026-06-22T02:23:00.3223465Z             },
2026-06-22T02:23:00.3223545Z             {
2026-06-22T02:23:00.3223649Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:23:00.3223731Z               "line": 325
2026-06-22T02:23:00.3223813Z             }
2026-06-22T02:23:00.3223892Z           ]
2026-06-22T02:23:00.3223978Z         }
2026-06-22T02:23:00.3224061Z       }
2026-06-22T02:23:00.3224142Z     },
2026-06-22T02:23:00.3224221Z     {
2026-06-22T02:23:00.3224308Z       "id": "REQ-DAEMON-9",
2026-06-22T02:23:00.3226669Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-22T02:23:00.3226778Z       "requiredStages": [
2026-06-22T02:23:00.3226870Z         "impl",
2026-06-22T02:23:00.3226951Z         "unit"
2026-06-22T02:23:00.3227037Z       ],
2026-06-22T02:23:00.3227127Z       "stages": {
2026-06-22T02:23:00.3227214Z         "doc": {
2026-06-22T02:23:00.3227304Z           "complete": false,
2026-06-22T02:23:00.3227394Z           "evidence": []
2026-06-22T02:23:00.3227475Z         },
2026-06-22T02:23:00.3227553Z         "impl": {
2026-06-22T02:23:00.3227646Z           "complete": true,
2026-06-22T02:23:00.3227728Z           "evidence": [
2026-06-22T02:23:00.3227809Z             {
2026-06-22T02:23:00.3227934Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3228024Z               "line": 276
2026-06-22T02:23:00.3228105Z             },
2026-06-22T02:23:00.3228187Z             {
2026-06-22T02:23:00.3228304Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3228386Z               "line": 1202
2026-06-22T02:23:00.3228473Z             },
2026-06-22T02:23:00.3228550Z             {
2026-06-22T02:23:00.3228666Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3228751Z               "line": 197
2026-06-22T02:23:00.3228829Z             },
2026-06-22T02:23:00.3228906Z             {
2026-06-22T02:23:00.3229119Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3229210Z               "line": 344
2026-06-22T02:23:00.3229291Z             },
2026-06-22T02:23:00.3229376Z             {
2026-06-22T02:23:00.3229497Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3229583Z               "line": 381
2026-06-22T02:23:00.3229667Z             },
2026-06-22T02:23:00.3229749Z             {
2026-06-22T02:23:00.3229849Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3229939Z               "line": 2075
2026-06-22T02:23:00.3230020Z             }
2026-06-22T02:23:00.3230103Z           ]
2026-06-22T02:23:00.3230178Z         },
2026-06-22T02:23:00.3230264Z         "int": {
2026-06-22T02:23:00.3230344Z           "complete": false,
2026-06-22T02:23:00.3230441Z           "evidence": []
2026-06-22T02:23:00.3230521Z         },
2026-06-22T02:23:00.3230717Z         "unit": {
2026-06-22T02:23:00.3230812Z           "complete": true,
2026-06-22T02:23:00.3230897Z           "evidence": [
2026-06-22T02:23:00.3231078Z             {
2026-06-22T02:23:00.3231186Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3231266Z               "line": 1158
2026-06-22T02:23:00.3231347Z             },
2026-06-22T02:23:00.3231424Z             {
2026-06-22T02:23:00.3231529Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3231609Z               "line": 10580
2026-06-22T02:23:00.3231691Z             }
2026-06-22T02:23:00.3231768Z           ]
2026-06-22T02:23:00.3231853Z         }
2026-06-22T02:23:00.3231929Z       }
2026-06-22T02:23:00.3232016Z     },
2026-06-22T02:23:00.3232101Z     {
2026-06-22T02:23:00.3232186Z       "id": "REQ-DOCS-1",
2026-06-22T02:23:00.3232378Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-22T02:23:00.3232459Z       "requiredStages": [
2026-06-22T02:23:00.3232539Z         "doc",
2026-06-22T02:23:00.3232626Z         "impl"
2026-06-22T02:23:00.3232697Z       ],
2026-06-22T02:23:00.3232783Z       "stages": {
2026-06-22T02:23:00.3232859Z         "doc": {
2026-06-22T02:23:00.3232950Z           "complete": true,
2026-06-22T02:23:00.3233031Z           "evidence": [
2026-06-22T02:23:00.3233111Z             {
2026-06-22T02:23:00.3233212Z               "path": "docs-site/src/index.md",
2026-06-22T02:23:00.3233299Z               "line": 50
2026-06-22T02:23:00.3233384Z             }
2026-06-22T02:23:00.3233464Z           ]
2026-06-22T02:23:00.3233546Z         },
2026-06-22T02:23:00.3233628Z         "impl": {
2026-06-22T02:23:00.3233708Z           "complete": true,
2026-06-22T02:23:00.3233797Z           "evidence": [
2026-06-22T02:23:00.3233883Z             {
2026-06-22T02:23:00.3234006Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T02:23:00.3234091Z               "line": 12
2026-06-22T02:23:00.3234171Z             },
2026-06-22T02:23:00.3234253Z             {
2026-06-22T02:23:00.3234363Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.3234448Z               "line": 14
2026-06-22T02:23:00.3234539Z             }
2026-06-22T02:23:00.3234621Z           ]
2026-06-22T02:23:00.3234706Z         },
2026-06-22T02:23:00.3234782Z         "int": {
2026-06-22T02:23:00.3234873Z           "complete": false,
2026-06-22T02:23:00.3234959Z           "evidence": []
2026-06-22T02:23:00.3235040Z         },
2026-06-22T02:23:00.3235129Z         "unit": {
2026-06-22T02:23:00.3235222Z           "complete": false,
2026-06-22T02:23:00.3235307Z           "evidence": []
2026-06-22T02:23:00.3235388Z         }
2026-06-22T02:23:00.3235469Z       }
2026-06-22T02:23:00.3235555Z     },
2026-06-22T02:23:00.3235636Z     {
2026-06-22T02:23:00.3235717Z       "id": "REQ-DOCS-2",
2026-06-22T02:23:00.3235879Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-22T02:23:00.3235974Z       "requiredStages": [
2026-06-22T02:23:00.3236060Z         "doc",
2026-06-22T02:23:00.3236147Z         "int"
2026-06-22T02:23:00.3236232Z       ],
2026-06-22T02:23:00.3236317Z       "stages": {
2026-06-22T02:23:00.3236416Z         "doc": {
2026-06-22T02:23:00.3236512Z           "complete": true,
2026-06-22T02:23:00.3236601Z           "evidence": [
2026-06-22T02:23:00.3236686Z             {
2026-06-22T02:23:00.3236853Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-22T02:23:00.3236944Z               "line": 3
2026-06-22T02:23:00.3237019Z             },
2026-06-22T02:23:00.3237110Z             {
2026-06-22T02:23:00.3237239Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-22T02:23:00.3237325Z               "line": 3
2026-06-22T02:23:00.3237410Z             },
2026-06-22T02:23:00.3237488Z             {
2026-06-22T02:23:00.3237621Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T02:23:00.3237711Z               "line": 3
2026-06-22T02:23:00.3237788Z             }
2026-06-22T02:23:00.3237873Z           ]
2026-06-22T02:23:00.3238031Z         },
2026-06-22T02:23:00.3238122Z         "impl": {
2026-06-22T02:23:00.3238212Z           "complete": false,
2026-06-22T02:23:00.3238399Z           "evidence": []
2026-06-22T02:23:00.3238489Z         },
2026-06-22T02:23:00.3238569Z         "int": {
2026-06-22T02:23:00.3238660Z           "complete": true,
2026-06-22T02:23:00.3238747Z           "evidence": [
2026-06-22T02:23:00.3238832Z             {
2026-06-22T02:23:00.3239014Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:23:00.3239105Z               "line": 14
2026-06-22T02:23:00.3239189Z             }
2026-06-22T02:23:00.3239269Z           ]
2026-06-22T02:23:00.3239350Z         },
2026-06-22T02:23:00.3239432Z         "unit": {
2026-06-22T02:23:00.3239527Z           "complete": false,
2026-06-22T02:23:00.3239612Z           "evidence": []
2026-06-22T02:23:00.3239694Z         }
2026-06-22T02:23:00.3239780Z       }
2026-06-22T02:23:00.3239860Z     },
2026-06-22T02:23:00.3239937Z     {
2026-06-22T02:23:00.3240024Z       "id": "REQ-DOCS-3",
2026-06-22T02:23:00.3240251Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-22T02:23:00.3240353Z       "requiredStages": [
2026-06-22T02:23:00.3240433Z         "doc"
2026-06-22T02:23:00.3240514Z       ],
2026-06-22T02:23:00.3240595Z       "stages": {
2026-06-22T02:23:00.3240682Z         "doc": {
2026-06-22T02:23:00.3240757Z           "complete": true,
2026-06-22T02:23:00.3240847Z           "evidence": [
2026-06-22T02:23:00.3240929Z             {
2026-06-22T02:23:00.3241039Z               "path": "docs-site/src/index.md",
2026-06-22T02:23:00.3241124Z               "line": 42
2026-06-22T02:23:00.3241210Z             }
2026-06-22T02:23:00.3241292Z           ]
2026-06-22T02:23:00.3241373Z         },
2026-06-22T02:23:00.3241457Z         "impl": {
2026-06-22T02:23:00.3241547Z           "complete": false,
2026-06-22T02:23:00.3241629Z           "evidence": []
2026-06-22T02:23:00.3241704Z         },
2026-06-22T02:23:00.3241779Z         "int": {
2026-06-22T02:23:00.3241878Z           "complete": false,
2026-06-22T02:23:00.3241960Z           "evidence": []
2026-06-22T02:23:00.3242051Z         },
2026-06-22T02:23:00.3242131Z         "unit": {
2026-06-22T02:23:00.3242232Z           "complete": false,
2026-06-22T02:23:00.3242313Z           "evidence": []
2026-06-22T02:23:00.3242394Z         }
2026-06-22T02:23:00.3242480Z       }
2026-06-22T02:23:00.3242556Z     },
2026-06-22T02:23:00.3242642Z     {
2026-06-22T02:23:00.3242723Z       "id": "REQ-DOCS-4",
2026-06-22T02:23:00.3242910Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-22T02:23:00.3243000Z       "requiredStages": [
2026-06-22T02:23:00.3243076Z         "doc",
2026-06-22T02:23:00.3243161Z         "impl",
2026-06-22T02:23:00.3243244Z         "unit"
2026-06-22T02:23:00.3243328Z       ],
2026-06-22T02:23:00.3243409Z       "stages": {
2026-06-22T02:23:00.3243491Z         "doc": {
2026-06-22T02:23:00.3243577Z           "complete": true,
2026-06-22T02:23:00.3243676Z           "evidence": [
2026-06-22T02:23:00.3243758Z             {
2026-06-22T02:23:00.3243859Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-22T02:23:00.3243953Z               "line": 35
2026-06-22T02:23:00.3244029Z             }
2026-06-22T02:23:00.3244101Z           ]
2026-06-22T02:23:00.3244184Z         },
2026-06-22T02:23:00.3244273Z         "impl": {
2026-06-22T02:23:00.3244363Z           "complete": true,
2026-06-22T02:23:00.3244448Z           "evidence": [
2026-06-22T02:23:00.3244529Z             {
2026-06-22T02:23:00.3244646Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.3244736Z               "line": 746
2026-06-22T02:23:00.3244808Z             },
2026-06-22T02:23:00.3244895Z             {
2026-06-22T02:23:00.3245008Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.3245080Z               "line": 15
2026-06-22T02:23:00.3245166Z             }
2026-06-22T02:23:00.3245238Z           ]
2026-06-22T02:23:00.3245323Z         },
2026-06-22T02:23:00.3245500Z         "int": {
2026-06-22T02:23:00.3245586Z           "complete": false,
2026-06-22T02:23:00.3245772Z           "evidence": []
2026-06-22T02:23:00.3245853Z         },
2026-06-22T02:23:00.3245938Z         "unit": {
2026-06-22T02:23:00.3246024Z           "complete": true,
2026-06-22T02:23:00.3246111Z           "evidence": [
2026-06-22T02:23:00.3246196Z             {
2026-06-22T02:23:00.3246305Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.3246397Z               "line": 1682
2026-06-22T02:23:00.3246478Z             }
2026-06-22T02:23:00.3246563Z           ]
2026-06-22T02:23:00.3246639Z         }
2026-06-22T02:23:00.3246726Z       }
2026-06-22T02:23:00.3246807Z     },
2026-06-22T02:23:00.3246887Z     {
2026-06-22T02:23:00.3246971Z       "id": "REQ-DOCS-5",
2026-06-22T02:23:00.3247152Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-22T02:23:00.3247246Z       "requiredStages": [
2026-06-22T02:23:00.3247331Z         "impl",
2026-06-22T02:23:00.3247413Z         "int"
2026-06-22T02:23:00.3247495Z       ],
2026-06-22T02:23:00.3247579Z       "stages": {
2026-06-22T02:23:00.3247656Z         "doc": {
2026-06-22T02:23:00.3247738Z           "complete": false,
2026-06-22T02:23:00.3247819Z           "evidence": []
2026-06-22T02:23:00.3247904Z         },
2026-06-22T02:23:00.3247980Z         "impl": {
2026-06-22T02:23:00.3248067Z           "complete": true,
2026-06-22T02:23:00.3248157Z           "evidence": [
2026-06-22T02:23:00.3248237Z             {
2026-06-22T02:23:00.3248348Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.3248434Z               "line": 747
2026-06-22T02:23:00.3248510Z             },
2026-06-22T02:23:00.3248591Z             {
2026-06-22T02:23:00.3248692Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.3248777Z               "line": 113
2026-06-22T02:23:00.3248858Z             }
2026-06-22T02:23:00.3248934Z           ]
2026-06-22T02:23:00.3249096Z         },
2026-06-22T02:23:00.3249182Z         "int": {
2026-06-22T02:23:00.3249264Z           "complete": true,
2026-06-22T02:23:00.3249355Z           "evidence": [
2026-06-22T02:23:00.3249439Z             {
2026-06-22T02:23:00.3249545Z               "path": ".github/workflows/ci.yml",
2026-06-22T02:23:00.3249627Z               "line": 175
2026-06-22T02:23:00.3249712Z             },
2026-06-22T02:23:00.3249791Z             {
2026-06-22T02:23:00.3249910Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.3249997Z               "line": 1719
2026-06-22T02:23:00.3250073Z             }
2026-06-22T02:23:00.3250148Z           ]
2026-06-22T02:23:00.3250220Z         },
2026-06-22T02:23:00.3250307Z         "unit": {
2026-06-22T02:23:00.3250393Z           "complete": false,
2026-06-22T02:23:00.3250482Z           "evidence": []
2026-06-22T02:23:00.3250560Z         }
2026-06-22T02:23:00.3250641Z       }
2026-06-22T02:23:00.3250722Z     },
2026-06-22T02:23:00.3250806Z     {
2026-06-22T02:23:00.3250903Z       "id": "REQ-DOCS-6",
2026-06-22T02:23:00.3251222Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-22T02:23:00.3251322Z       "requiredStages": [
2026-06-22T02:23:00.3251394Z         "impl",
2026-06-22T02:23:00.3251470Z         "unit",
2026-06-22T02:23:00.3251557Z         "int"
2026-06-22T02:23:00.3251637Z       ],
2026-06-22T02:23:00.3251722Z       "stages": {
2026-06-22T02:23:00.3251799Z         "doc": {
2026-06-22T02:23:00.3251891Z           "complete": true,
2026-06-22T02:23:00.3251979Z           "evidence": [
2026-06-22T02:23:00.3252060Z             {
2026-06-22T02:23:00.3252193Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T02:23:00.3252274Z               "line": 4
2026-06-22T02:23:00.3252358Z             }
2026-06-22T02:23:00.3252438Z           ]
2026-06-22T02:23:00.3252525Z         },
2026-06-22T02:23:00.3252602Z         "impl": {
2026-06-22T02:23:00.3252687Z           "complete": true,
2026-06-22T02:23:00.3252878Z           "evidence": [
2026-06-22T02:23:00.3252964Z             {
2026-06-22T02:23:00.3253165Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3253250Z               "line": 5240
2026-06-22T02:23:00.3253335Z             }
2026-06-22T02:23:00.3253407Z           ]
2026-06-22T02:23:00.3253480Z         },
2026-06-22T02:23:00.3253565Z         "int": {
2026-06-22T02:23:00.3253654Z           "complete": true,
2026-06-22T02:23:00.3253736Z           "evidence": [
2026-06-22T02:23:00.3253818Z             {
2026-06-22T02:23:00.3253932Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:23:00.3254013Z               "line": 39
2026-06-22T02:23:00.3254095Z             }
2026-06-22T02:23:00.3254175Z           ]
2026-06-22T02:23:00.3254251Z         },
2026-06-22T02:23:00.3254342Z         "unit": {
2026-06-22T02:23:00.3254429Z           "complete": true,
2026-06-22T02:23:00.3254522Z           "evidence": [
2026-06-22T02:23:00.3254604Z             {
2026-06-22T02:23:00.3254710Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3254800Z               "line": 10742
2026-06-22T02:23:00.3254885Z             }
2026-06-22T02:23:00.3254965Z           ]
2026-06-22T02:23:00.3255046Z         }
2026-06-22T02:23:00.3255127Z       }
2026-06-22T02:23:00.3255206Z     },
2026-06-22T02:23:00.3255291Z     {
2026-06-22T02:23:00.3255383Z       "id": "REQ-ELEVATE-1",
2026-06-22T02:23:00.3258464Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-22T02:23:00.3258575Z       "requiredStages": [
2026-06-22T02:23:00.3258660Z         "doc",
2026-06-22T02:23:00.3258741Z         "impl",
2026-06-22T02:23:00.3258826Z         "unit"
2026-06-22T02:23:00.3258909Z       ],
2026-06-22T02:23:00.3259065Z       "stages": {
2026-06-22T02:23:00.3259151Z         "doc": {
2026-06-22T02:23:00.3259233Z           "complete": true,
2026-06-22T02:23:00.3259323Z           "evidence": [
2026-06-22T02:23:00.3259408Z             {
2026-06-22T02:23:00.3259509Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.3259600Z               "line": 687
2026-06-22T02:23:00.3259680Z             }
2026-06-22T02:23:00.3259761Z           ]
2026-06-22T02:23:00.3259848Z         },
2026-06-22T02:23:00.3259924Z         "impl": {
2026-06-22T02:23:00.3260009Z           "complete": true,
2026-06-22T02:23:00.3260090Z           "evidence": [
2026-06-22T02:23:00.3260173Z             {
2026-06-22T02:23:00.3260281Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3260375Z               "line": 3572
2026-06-22T02:23:00.3260451Z             },
2026-06-22T02:23:00.3260538Z             {
2026-06-22T02:23:00.3260638Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3260728Z               "line": 3617
2026-06-22T02:23:00.3260815Z             },
2026-06-22T02:23:00.3260896Z             {
2026-06-22T02:23:00.3260986Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3261071Z               "line": 3679
2026-06-22T02:23:00.3261158Z             },
2026-06-22T02:23:00.3261238Z             {
2026-06-22T02:23:00.3261454Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3261549Z               "line": 92
2026-06-22T02:23:00.3261725Z             },
2026-06-22T02:23:00.3261812Z             {
2026-06-22T02:23:00.3261915Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3262006Z               "line": 148
2026-06-22T02:23:00.3262088Z             }
2026-06-22T02:23:00.3262164Z           ]
2026-06-22T02:23:00.3262248Z         },
2026-06-22T02:23:00.3262325Z         "int": {
2026-06-22T02:23:00.3262413Z           "complete": false,
2026-06-22T02:23:00.3262498Z           "evidence": []
2026-06-22T02:23:00.3262582Z         },
2026-06-22T02:23:00.3262663Z         "unit": {
2026-06-22T02:23:00.3262758Z           "complete": true,
2026-06-22T02:23:00.3262843Z           "evidence": [
2026-06-22T02:23:00.3262932Z             {
2026-06-22T02:23:00.3263033Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3263119Z               "line": 442
2026-06-22T02:23:00.3263214Z             },
2026-06-22T02:23:00.3263295Z             {
2026-06-22T02:23:00.3263395Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3263491Z               "line": 460
2026-06-22T02:23:00.3263561Z             }
2026-06-22T02:23:00.3263642Z           ]
2026-06-22T02:23:00.3263725Z         }
2026-06-22T02:23:00.3263810Z       }
2026-06-22T02:23:00.3263881Z     },
2026-06-22T02:23:00.3263972Z     {
2026-06-22T02:23:00.3264082Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-22T02:23:00.3265814Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-22T02:23:00.3265923Z       "requiredStages": [
2026-06-22T02:23:00.3266010Z         "doc",
2026-06-22T02:23:00.3266086Z         "impl",
2026-06-22T02:23:00.3266176Z         "unit"
2026-06-22T02:23:00.3266258Z       ],
2026-06-22T02:23:00.3266343Z       "stages": {
2026-06-22T02:23:00.3266424Z         "doc": {
2026-06-22T02:23:00.3266509Z           "complete": true,
2026-06-22T02:23:00.3266597Z           "evidence": [
2026-06-22T02:23:00.3266682Z             {
2026-06-22T02:23:00.3266777Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.3266863Z               "line": 711
2026-06-22T02:23:00.3266945Z             }
2026-06-22T02:23:00.3267025Z           ]
2026-06-22T02:23:00.3267106Z         },
2026-06-22T02:23:00.3267188Z         "impl": {
2026-06-22T02:23:00.3267274Z           "complete": true,
2026-06-22T02:23:00.3267354Z           "evidence": [
2026-06-22T02:23:00.3267440Z             {
2026-06-22T02:23:00.3267546Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3267635Z               "line": 1721
2026-06-22T02:23:00.3267721Z             },
2026-06-22T02:23:00.3267803Z             {
2026-06-22T02:23:00.3267913Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3267992Z               "line": 3125
2026-06-22T02:23:00.3268073Z             },
2026-06-22T02:23:00.3268154Z             {
2026-06-22T02:23:00.3268253Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3268338Z               "line": 3134
2026-06-22T02:23:00.3268423Z             }
2026-06-22T02:23:00.3268500Z           ]
2026-06-22T02:23:00.3268587Z         },
2026-06-22T02:23:00.3268667Z         "int": {
2026-06-22T02:23:00.3268762Z           "complete": false,
2026-06-22T02:23:00.3268858Z           "evidence": []
2026-06-22T02:23:00.3269005Z         },
2026-06-22T02:23:00.3269086Z         "unit": {
2026-06-22T02:23:00.3269287Z           "complete": true,
2026-06-22T02:23:00.3269396Z           "evidence": [
2026-06-22T02:23:00.3269478Z             {
2026-06-22T02:23:00.3269687Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3269798Z               "line": 7950
2026-06-22T02:23:00.3269883Z             },
2026-06-22T02:23:00.3269964Z             {
2026-06-22T02:23:00.3270055Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3270150Z               "line": 7991
2026-06-22T02:23:00.3270226Z             }
2026-06-22T02:23:00.3270307Z           ]
2026-06-22T02:23:00.3270389Z         }
2026-06-22T02:23:00.3270470Z       }
2026-06-22T02:23:00.3270550Z     },
2026-06-22T02:23:00.3270636Z     {
2026-06-22T02:23:00.3270738Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-22T02:23:00.3275423Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-22T02:23:00.3275563Z       "requiredStages": [
2026-06-22T02:23:00.3275648Z         "doc",
2026-06-22T02:23:00.3275734Z         "impl",
2026-06-22T02:23:00.3275825Z         "unit",
2026-06-22T02:23:00.3275912Z         "int"
2026-06-22T02:23:00.3275995Z       ],
2026-06-22T02:23:00.3276081Z       "stages": {
2026-06-22T02:23:00.3276157Z         "doc": {
2026-06-22T02:23:00.3276243Z           "complete": true,
2026-06-22T02:23:00.3276331Z           "evidence": [
2026-06-22T02:23:00.3276417Z             {
2026-06-22T02:23:00.3276512Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.3276594Z               "line": 163
2026-06-22T02:23:00.3276679Z             }
2026-06-22T02:23:00.3276760Z           ]
2026-06-22T02:23:00.3276842Z         },
2026-06-22T02:23:00.3276923Z         "impl": {
2026-06-22T02:23:00.3277027Z           "complete": true,
2026-06-22T02:23:00.3277104Z           "evidence": [
2026-06-22T02:23:00.3277186Z             {
2026-06-22T02:23:00.3277308Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.3277399Z               "line": 105
2026-06-22T02:23:00.3277476Z             },
2026-06-22T02:23:00.3277556Z             {
2026-06-22T02:23:00.3277661Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3277738Z               "line": 7219
2026-06-22T02:23:00.3277820Z             }
2026-06-22T02:23:00.3277895Z           ]
2026-06-22T02:23:00.3277971Z         },
2026-06-22T02:23:00.3278053Z         "int": {
2026-06-22T02:23:00.3278149Z           "complete": true,
2026-06-22T02:23:00.3278238Z           "evidence": [
2026-06-22T02:23:00.3278334Z             {
2026-06-22T02:23:00.3278455Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3278714Z               "line": 7384
2026-06-22T02:23:00.3278795Z             }
2026-06-22T02:23:00.3278874Z           ]
2026-06-22T02:23:00.3279103Z         },
2026-06-22T02:23:00.3279184Z         "unit": {
2026-06-22T02:23:00.3279274Z           "complete": true,
2026-06-22T02:23:00.3279356Z           "evidence": [
2026-06-22T02:23:00.3279437Z             {
2026-06-22T02:23:00.3279541Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3279627Z               "line": 7355
2026-06-22T02:23:00.3279705Z             }
2026-06-22T02:23:00.3279790Z           ]
2026-06-22T02:23:00.3279870Z         }
2026-06-22T02:23:00.3279956Z       }
2026-06-22T02:23:00.3280039Z     },
2026-06-22T02:23:00.3280118Z     {
2026-06-22T02:23:00.3280228Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-22T02:23:00.3281491Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-22T02:23:00.3281615Z       "requiredStages": [
2026-06-22T02:23:00.3281697Z         "impl",
2026-06-22T02:23:00.3281782Z         "unit"
2026-06-22T02:23:00.3281857Z       ],
2026-06-22T02:23:00.3281949Z       "stages": {
2026-06-22T02:23:00.3282030Z         "doc": {
2026-06-22T02:23:00.3282110Z           "complete": false,
2026-06-22T02:23:00.3282201Z           "evidence": []
2026-06-22T02:23:00.3282283Z         },
2026-06-22T02:23:00.3282369Z         "impl": {
2026-06-22T02:23:00.3282459Z           "complete": true,
2026-06-22T02:23:00.3282549Z           "evidence": [
2026-06-22T02:23:00.3282631Z             {
2026-06-22T02:23:00.3282731Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3282830Z               "line": 3165
2026-06-22T02:23:00.3282913Z             }
2026-06-22T02:23:00.3282993Z           ]
2026-06-22T02:23:00.3283074Z         },
2026-06-22T02:23:00.3283170Z         "int": {
2026-06-22T02:23:00.3283265Z           "complete": false,
2026-06-22T02:23:00.3283345Z           "evidence": []
2026-06-22T02:23:00.3283432Z         },
2026-06-22T02:23:00.3283513Z         "unit": {
2026-06-22T02:23:00.3283613Z           "complete": true,
2026-06-22T02:23:00.3283698Z           "evidence": [
2026-06-22T02:23:00.3283783Z             {
2026-06-22T02:23:00.3283888Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3283968Z               "line": 7331
2026-06-22T02:23:00.3284057Z             }
2026-06-22T02:23:00.3284133Z           ]
2026-06-22T02:23:00.3284220Z         }
2026-06-22T02:23:00.3284292Z       }
2026-06-22T02:23:00.3284376Z     },
2026-06-22T02:23:00.3284467Z     {
2026-06-22T02:23:00.3284550Z       "id": "REQ-EP-1",
2026-06-22T02:23:00.3284673Z       "title": "Day-one endpoint types; open type system",
2026-06-22T02:23:00.3284768Z       "requiredStages": [
2026-06-22T02:23:00.3284855Z         "impl",
2026-06-22T02:23:00.3284945Z         "unit"
2026-06-22T02:23:00.3285025Z       ],
2026-06-22T02:23:00.3285117Z       "stages": {
2026-06-22T02:23:00.3285202Z         "doc": {
2026-06-22T02:23:00.3285297Z           "complete": false,
2026-06-22T02:23:00.3285388Z           "evidence": []
2026-06-22T02:23:00.3285474Z         },
2026-06-22T02:23:00.3285555Z         "impl": {
2026-06-22T02:23:00.3285655Z           "complete": true,
2026-06-22T02:23:00.3285751Z           "evidence": [
2026-06-22T02:23:00.3285828Z             {
2026-06-22T02:23:00.3285951Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3286037Z               "line": 77
2026-06-22T02:23:00.3286119Z             },
2026-06-22T02:23:00.3286203Z             {
2026-06-22T02:23:00.3286317Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3286410Z               "line": 94
2026-06-22T02:23:00.3286617Z             }
2026-06-22T02:23:00.3286732Z           ]
2026-06-22T02:23:00.3286812Z         },
2026-06-22T02:23:00.3286891Z         "int": {
2026-06-22T02:23:00.3287068Z           "complete": false,
2026-06-22T02:23:00.3287164Z           "evidence": []
2026-06-22T02:23:00.3287243Z         },
2026-06-22T02:23:00.3287320Z         "unit": {
2026-06-22T02:23:00.3287417Z           "complete": true,
2026-06-22T02:23:00.3287507Z           "evidence": [
2026-06-22T02:23:00.3287587Z             {
2026-06-22T02:23:00.3287698Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3287788Z               "line": 161
2026-06-22T02:23:00.3287878Z             },
2026-06-22T02:23:00.3287950Z             {
2026-06-22T02:23:00.3288060Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3288145Z               "line": 178
2026-06-22T02:23:00.3288226Z             }
2026-06-22T02:23:00.3288298Z           ]
2026-06-22T02:23:00.3288375Z         }
2026-06-22T02:23:00.3288460Z       }
2026-06-22T02:23:00.3288545Z     },
2026-06-22T02:23:00.3288633Z     {
2026-06-22T02:23:00.3288714Z       "id": "REQ-EP-2",
2026-06-22T02:23:00.3288889Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-22T02:23:00.3289043Z       "requiredStages": [
2026-06-22T02:23:00.3289122Z         "impl",
2026-06-22T02:23:00.3289207Z         "unit"
2026-06-22T02:23:00.3289288Z       ],
2026-06-22T02:23:00.3289374Z       "stages": {
2026-06-22T02:23:00.3289448Z         "doc": {
2026-06-22T02:23:00.3289543Z           "complete": false,
2026-06-22T02:23:00.3289635Z           "evidence": []
2026-06-22T02:23:00.3289717Z         },
2026-06-22T02:23:00.3289801Z         "impl": {
2026-06-22T02:23:00.3289887Z           "complete": true,
2026-06-22T02:23:00.3289979Z           "evidence": [
2026-06-22T02:23:00.3290055Z             {
2026-06-22T02:23:00.3290182Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3290274Z               "line": 114
2026-06-22T02:23:00.3290359Z             },
2026-06-22T02:23:00.3290435Z             {
2026-06-22T02:23:00.3290541Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3290641Z               "line": 131
2026-06-22T02:23:00.3290722Z             },
2026-06-22T02:23:00.3290807Z             {
2026-06-22T02:23:00.3290918Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3290998Z               "line": 138
2026-06-22T02:23:00.3291084Z             }
2026-06-22T02:23:00.3291165Z           ]
2026-06-22T02:23:00.3291252Z         },
2026-06-22T02:23:00.3291350Z         "int": {
2026-06-22T02:23:00.3291442Z           "complete": false,
2026-06-22T02:23:00.3291533Z           "evidence": []
2026-06-22T02:23:00.3291618Z         },
2026-06-22T02:23:00.3291704Z         "unit": {
2026-06-22T02:23:00.3291795Z           "complete": true,
2026-06-22T02:23:00.3291877Z           "evidence": [
2026-06-22T02:23:00.3291956Z             {
2026-06-22T02:23:00.3292079Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3292160Z               "line": 190
2026-06-22T02:23:00.3292252Z             },
2026-06-22T02:23:00.3292332Z             {
2026-06-22T02:23:00.3292437Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3292528Z               "line": 208
2026-06-22T02:23:00.3292614Z             },
2026-06-22T02:23:00.3292699Z             {
2026-06-22T02:23:00.3292805Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:23:00.3292895Z               "line": 221
2026-06-22T02:23:00.3292985Z             }
2026-06-22T02:23:00.3293066Z           ]
2026-06-22T02:23:00.3293149Z         }
2026-06-22T02:23:00.3293229Z       }
2026-06-22T02:23:00.3293319Z     },
2026-06-22T02:23:00.3293395Z     {
2026-06-22T02:23:00.3293482Z       "id": "REQ-EP-3",
2026-06-22T02:23:00.3293667Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-22T02:23:00.3293759Z       "requiredStages": [
2026-06-22T02:23:00.3296878Z         "impl",
2026-06-22T02:23:00.3297139Z         "unit"
2026-06-22T02:23:00.3297229Z       ],
2026-06-22T02:23:00.3297315Z       "stages": {
2026-06-22T02:23:00.3297590Z         "doc": {
2026-06-22T02:23:00.3297690Z           "complete": false,
2026-06-22T02:23:00.3297771Z           "evidence": []
2026-06-22T02:23:00.3297861Z         },
2026-06-22T02:23:00.3297934Z         "impl": {
2026-06-22T02:23:00.3298024Z           "complete": true,
2026-06-22T02:23:00.3298100Z           "evidence": [
2026-06-22T02:23:00.3298176Z             {
2026-06-22T02:23:00.3298311Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3298396Z               "line": 31
2026-06-22T02:23:00.3298471Z             },
2026-06-22T02:23:00.3298553Z             {
2026-06-22T02:23:00.3298682Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3298767Z               "line": 49
2026-06-22T02:23:00.3298848Z             }
2026-06-22T02:23:00.3298935Z           ]
2026-06-22T02:23:00.3299101Z         },
2026-06-22T02:23:00.3299188Z         "int": {
2026-06-22T02:23:00.3299284Z           "complete": false,
2026-06-22T02:23:00.3299377Z           "evidence": []
2026-06-22T02:23:00.3299459Z         },
2026-06-22T02:23:00.3299536Z         "unit": {
2026-06-22T02:23:00.3299631Z           "complete": true,
2026-06-22T02:23:00.3299715Z           "evidence": [
2026-06-22T02:23:00.3299796Z             {
2026-06-22T02:23:00.3299916Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3299999Z               "line": 156
2026-06-22T02:23:00.3300075Z             },
2026-06-22T02:23:00.3300162Z             {
2026-06-22T02:23:00.3300277Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3300356Z               "line": 164
2026-06-22T02:23:00.3300442Z             },
2026-06-22T02:23:00.3300520Z             {
2026-06-22T02:23:00.3300625Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3300709Z               "line": 177
2026-06-22T02:23:00.3300791Z             },
2026-06-22T02:23:00.3300877Z             {
2026-06-22T02:23:00.3300986Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3301081Z               "line": 200
2026-06-22T02:23:00.3301163Z             },
2026-06-22T02:23:00.3301243Z             {
2026-06-22T02:23:00.3301358Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3301445Z               "line": 216
2026-06-22T02:23:00.3301526Z             },
2026-06-22T02:23:00.3301607Z             {
2026-06-22T02:23:00.3301715Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:23:00.3301803Z               "line": 233
2026-06-22T02:23:00.3301882Z             }
2026-06-22T02:23:00.3301968Z           ]
2026-06-22T02:23:00.3302050Z         }
2026-06-22T02:23:00.3302137Z       }
2026-06-22T02:23:00.3302216Z     },
2026-06-22T02:23:00.3302302Z     {
2026-06-22T02:23:00.3302385Z       "id": "REQ-EP-4",
2026-06-22T02:23:00.3302535Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-22T02:23:00.3302640Z       "requiredStages": [
2026-06-22T02:23:00.3302725Z         "impl",
2026-06-22T02:23:00.3302807Z         "unit"
2026-06-22T02:23:00.3302883Z       ],
2026-06-22T02:23:00.3302973Z       "stages": {
2026-06-22T02:23:00.3303055Z         "doc": {
2026-06-22T02:23:00.3303155Z           "complete": false,
2026-06-22T02:23:00.3303240Z           "evidence": []
2026-06-22T02:23:00.3303326Z         },
2026-06-22T02:23:00.3303418Z         "impl": {
2026-06-22T02:23:00.3303508Z           "complete": true,
2026-06-22T02:23:00.3303598Z           "evidence": [
2026-06-22T02:23:00.3303670Z             {
2026-06-22T02:23:00.3303784Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3303874Z               "line": 778
2026-06-22T02:23:00.3303950Z             },
2026-06-22T02:23:00.3304033Z             {
2026-06-22T02:23:00.3304151Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3304237Z               "line": 1221
2026-06-22T02:23:00.3304433Z             },
2026-06-22T02:23:00.3304513Z             {
2026-06-22T02:23:00.3304629Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3304794Z               "line": 2169
2026-06-22T02:23:00.3304879Z             },
2026-06-22T02:23:00.3304960Z             {
2026-06-22T02:23:00.3305074Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3305159Z               "line": 125
2026-06-22T02:23:00.3305244Z             },
2026-06-22T02:23:00.3305321Z             {
2026-06-22T02:23:00.3305430Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3305511Z               "line": 715
2026-06-22T02:23:00.3305592Z             },
2026-06-22T02:23:00.3305679Z             {
2026-06-22T02:23:00.3305779Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3305868Z               "line": 864
2026-06-22T02:23:00.3305951Z             },
2026-06-22T02:23:00.3306041Z             {
2026-06-22T02:23:00.3306164Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3306257Z               "line": 271
2026-06-22T02:23:00.3306342Z             },
2026-06-22T02:23:00.3306427Z             {
2026-06-22T02:23:00.3306546Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3306628Z               "line": 458
2026-06-22T02:23:00.3306709Z             },
2026-06-22T02:23:00.3306790Z             {
2026-06-22T02:23:00.3306905Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3306985Z               "line": 1246
2026-06-22T02:23:00.3307066Z             }
2026-06-22T02:23:00.3307147Z           ]
2026-06-22T02:23:00.3307230Z         },
2026-06-22T02:23:00.3307305Z         "int": {
2026-06-22T02:23:00.3307400Z           "complete": false,
2026-06-22T02:23:00.3307487Z           "evidence": []
2026-06-22T02:23:00.3307572Z         },
2026-06-22T02:23:00.3307648Z         "unit": {
2026-06-22T02:23:00.3307737Z           "complete": true,
2026-06-22T02:23:00.3307828Z           "evidence": [
2026-06-22T02:23:00.3307913Z             {
2026-06-22T02:23:00.3308031Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3308121Z               "line": 955
2026-06-22T02:23:00.3308198Z             },
2026-06-22T02:23:00.3308269Z             {
2026-06-22T02:23:00.3308402Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T02:23:00.3308499Z               "line": 76
2026-06-22T02:23:00.3308580Z             },
2026-06-22T02:23:00.3308660Z             {
2026-06-22T02:23:00.3308779Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T02:23:00.3308866Z               "line": 147
2026-06-22T02:23:00.3309031Z             }
2026-06-22T02:23:00.3309113Z           ]
2026-06-22T02:23:00.3309195Z         }
2026-06-22T02:23:00.3309275Z       }
2026-06-22T02:23:00.3309356Z     },
2026-06-22T02:23:00.3309438Z     {
2026-06-22T02:23:00.3309529Z       "id": "REQ-EP-5",
2026-06-22T02:23:00.3310168Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-22T02:23:00.3310280Z       "requiredStages": [
2026-06-22T02:23:00.3310361Z         "impl",
2026-06-22T02:23:00.3310432Z         "unit",
2026-06-22T02:23:00.3310518Z         "int"
2026-06-22T02:23:00.3310597Z       ],
2026-06-22T02:23:00.3310687Z       "stages": {
2026-06-22T02:23:00.3310774Z         "doc": {
2026-06-22T02:23:00.3310861Z           "complete": false,
2026-06-22T02:23:00.3310954Z           "evidence": []
2026-06-22T02:23:00.3311036Z         },
2026-06-22T02:23:00.3311123Z         "impl": {
2026-06-22T02:23:00.3311199Z           "complete": true,
2026-06-22T02:23:00.3311283Z           "evidence": [
2026-06-22T02:23:00.3311370Z             {
2026-06-22T02:23:00.3311494Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3311579Z               "line": 367
2026-06-22T02:23:00.3311761Z             },
2026-06-22T02:23:00.3311847Z             {
2026-06-22T02:23:00.3311970Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3312152Z               "line": 18
2026-06-22T02:23:00.3312232Z             },
2026-06-22T02:23:00.3312315Z             {
2026-06-22T02:23:00.3312419Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3312505Z               "line": 63
2026-06-22T02:23:00.3312586Z             },
2026-06-22T02:23:00.3312668Z             {
2026-06-22T02:23:00.3312781Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3312867Z               "line": 92
2026-06-22T02:23:00.3312950Z             },
2026-06-22T02:23:00.3313031Z             {
2026-06-22T02:23:00.3313142Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3313232Z               "line": 167
2026-06-22T02:23:00.3313314Z             },
2026-06-22T02:23:00.3313401Z             {
2026-06-22T02:23:00.3313519Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3313605Z               "line": 179
2026-06-22T02:23:00.3313701Z             },
2026-06-22T02:23:00.3313772Z             {
2026-06-22T02:23:00.3313891Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.3313973Z               "line": 114
2026-06-22T02:23:00.3314059Z             },
2026-06-22T02:23:00.3314153Z             {
2026-06-22T02:23:00.3314264Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3314359Z               "line": 22
2026-06-22T02:23:00.3314439Z             },
2026-06-22T02:23:00.3314520Z             {
2026-06-22T02:23:00.3314627Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3314711Z               "line": 145
2026-06-22T02:23:00.3314792Z             },
2026-06-22T02:23:00.3314874Z             {
2026-06-22T02:23:00.3314988Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3315069Z               "line": 174
2026-06-22T02:23:00.3315159Z             },
2026-06-22T02:23:00.3315233Z             {
2026-06-22T02:23:00.3315345Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3315435Z               "line": 196
2026-06-22T02:23:00.3315507Z             },
2026-06-22T02:23:00.3315592Z             {
2026-06-22T02:23:00.3315700Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3315785Z               "line": 221
2026-06-22T02:23:00.3315867Z             },
2026-06-22T02:23:00.3315944Z             {
2026-06-22T02:23:00.3316062Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3316148Z               "line": 247
2026-06-22T02:23:00.3316225Z             },
2026-06-22T02:23:00.3316310Z             {
2026-06-22T02:23:00.3316419Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3316502Z               "line": 270
2026-06-22T02:23:00.3316587Z             },
2026-06-22T02:23:00.3316667Z             {
2026-06-22T02:23:00.3316787Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.3316882Z               "line": 104
2026-06-22T02:23:00.3316987Z             },
2026-06-22T02:23:00.3317073Z             {
2026-06-22T02:23:00.3317183Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3317269Z               "line": 6068
2026-06-22T02:23:00.3317354Z             },
2026-06-22T02:23:00.3317426Z             {
2026-06-22T02:23:00.3317531Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3317612Z               "line": 6202
2026-06-22T02:23:00.3317697Z             },
2026-06-22T02:23:00.3317780Z             {
2026-06-22T02:23:00.3317869Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3317950Z               "line": 6368
2026-06-22T02:23:00.3318027Z             },
2026-06-22T02:23:00.3318109Z             {
2026-06-22T02:23:00.3318208Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3318288Z               "line": 6896
2026-06-22T02:23:00.3318450Z             }
2026-06-22T02:23:00.3318529Z           ]
2026-06-22T02:23:00.3318610Z         },
2026-06-22T02:23:00.3318758Z         "int": {
2026-06-22T02:23:00.3318849Z           "complete": true,
2026-06-22T02:23:00.3318924Z           "evidence": [
2026-06-22T02:23:00.3319092Z             {
2026-06-22T02:23:00.3319215Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:23:00.3319296Z               "line": 16
2026-06-22T02:23:00.3319379Z             },
2026-06-22T02:23:00.3319459Z             {
2026-06-22T02:23:00.3319573Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:23:00.3319659Z               "line": 15
2026-06-22T02:23:00.3319740Z             }
2026-06-22T02:23:00.3319821Z           ]
2026-06-22T02:23:00.3319902Z         },
2026-06-22T02:23:00.3319988Z         "unit": {
2026-06-22T02:23:00.3320069Z           "complete": true,
2026-06-22T02:23:00.3320150Z           "evidence": [
2026-06-22T02:23:00.3320231Z             {
2026-06-22T02:23:00.3320351Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3320441Z               "line": 246
2026-06-22T02:23:00.3320517Z             },
2026-06-22T02:23:00.3320594Z             {
2026-06-22T02:23:00.3320709Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3320793Z               "line": 306
2026-06-22T02:23:00.3320874Z             },
2026-06-22T02:23:00.3320959Z             {
2026-06-22T02:23:00.3321068Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:23:00.3321153Z               "line": 363
2026-06-22T02:23:00.3321233Z             },
2026-06-22T02:23:00.3321310Z             {
2026-06-22T02:23:00.3321430Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3321514Z               "line": 286
2026-06-22T02:23:00.3321596Z             },
2026-06-22T02:23:00.3321678Z             {
2026-06-22T02:23:00.3321787Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3321868Z               "line": 338
2026-06-22T02:23:00.3321954Z             },
2026-06-22T02:23:00.3322040Z             {
2026-06-22T02:23:00.3322144Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.3322221Z               "line": 783
2026-06-22T02:23:00.3322303Z             },
2026-06-22T02:23:00.3322387Z             {
2026-06-22T02:23:00.3322492Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3322579Z               "line": 8751
2026-06-22T02:23:00.3322650Z             },
2026-06-22T02:23:00.3322731Z             {
2026-06-22T02:23:00.3322822Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3322904Z               "line": 8904
2026-06-22T02:23:00.3322984Z             },
2026-06-22T02:23:00.3323065Z             {
2026-06-22T02:23:00.3323151Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3323242Z               "line": 9493
2026-06-22T02:23:00.3323332Z             },
2026-06-22T02:23:00.3323413Z             {
2026-06-22T02:23:00.3323514Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3323600Z               "line": 9609
2026-06-22T02:23:00.3323679Z             }
2026-06-22T02:23:00.3323769Z           ]
2026-06-22T02:23:00.3323855Z         }
2026-06-22T02:23:00.3323937Z       }
2026-06-22T02:23:00.3324017Z     },
2026-06-22T02:23:00.3324098Z     {
2026-06-22T02:23:00.3324184Z       "id": "REQ-EP-6",
2026-06-22T02:23:00.3325657Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-22T02:23:00.3325759Z       "requiredStages": [
2026-06-22T02:23:00.3325835Z         "doc",
2026-06-22T02:23:00.3326090Z         "impl",
2026-06-22T02:23:00.3326176Z         "unit"
2026-06-22T02:23:00.3326260Z       ],
2026-06-22T02:23:00.3326437Z       "stages": {
2026-06-22T02:23:00.3326528Z         "doc": {
2026-06-22T02:23:00.3326622Z           "complete": true,
2026-06-22T02:23:00.3326703Z           "evidence": [
2026-06-22T02:23:00.3326780Z             {
2026-06-22T02:23:00.3326875Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.3326965Z               "line": 227
2026-06-22T02:23:00.3327042Z             }
2026-06-22T02:23:00.3327123Z           ]
2026-06-22T02:23:00.3327209Z         },
2026-06-22T02:23:00.3327290Z         "impl": {
2026-06-22T02:23:00.3327367Z           "complete": true,
2026-06-22T02:23:00.3327452Z           "evidence": [
2026-06-22T02:23:00.3327538Z             {
2026-06-22T02:23:00.3327652Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3327739Z               "line": 212
2026-06-22T02:23:00.3327819Z             }
2026-06-22T02:23:00.3327890Z           ]
2026-06-22T02:23:00.3327972Z         },
2026-06-22T02:23:00.3328054Z         "int": {
2026-06-22T02:23:00.3328143Z           "complete": true,
2026-06-22T02:23:00.3328224Z           "evidence": [
2026-06-22T02:23:00.3328306Z             {
2026-06-22T02:23:00.3328425Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T02:23:00.3328510Z               "line": 18
2026-06-22T02:23:00.3328592Z             }
2026-06-22T02:23:00.3328674Z           ]
2026-06-22T02:23:00.3328758Z         },
2026-06-22T02:23:00.3328839Z         "unit": {
2026-06-22T02:23:00.3328934Z           "complete": true,
2026-06-22T02:23:00.3329122Z           "evidence": [
2026-06-22T02:23:00.3329189Z             {
2026-06-22T02:23:00.3329309Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.3329395Z               "line": 556
2026-06-22T02:23:00.3329475Z             },
2026-06-22T02:23:00.3329551Z             {
2026-06-22T02:23:00.3329666Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3329761Z               "line": 904
2026-06-22T02:23:00.3329837Z             }
2026-06-22T02:23:00.3329919Z           ]
2026-06-22T02:23:00.3330009Z         }
2026-06-22T02:23:00.3330095Z       }
2026-06-22T02:23:00.3330171Z     },
2026-06-22T02:23:00.3330253Z     {
2026-06-22T02:23:00.3330343Z       "id": "REQ-EP-7",
2026-06-22T02:23:00.3331976Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-22T02:23:00.3332061Z       "requiredStages": [
2026-06-22T02:23:00.3332146Z         "doc",
2026-06-22T02:23:00.3332243Z         "impl",
2026-06-22T02:23:00.3332324Z         "unit"
2026-06-22T02:23:00.3332403Z       ],
2026-06-22T02:23:00.3332496Z       "stages": {
2026-06-22T02:23:00.3332576Z         "doc": {
2026-06-22T02:23:00.3332667Z           "complete": true,
2026-06-22T02:23:00.3332747Z           "evidence": [
2026-06-22T02:23:00.3332825Z             {
2026-06-22T02:23:00.3332924Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.3333005Z               "line": 490
2026-06-22T02:23:00.3333086Z             }
2026-06-22T02:23:00.3333163Z           ]
2026-06-22T02:23:00.3333248Z         },
2026-06-22T02:23:00.3333325Z         "impl": {
2026-06-22T02:23:00.3333406Z           "complete": true,
2026-06-22T02:23:00.3333492Z           "evidence": [
2026-06-22T02:23:00.3333573Z             {
2026-06-22T02:23:00.3333691Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.3333769Z               "line": 505
2026-06-22T02:23:00.3333854Z             },
2026-06-22T02:23:00.3333939Z             {
2026-06-22T02:23:00.3334151Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.3334239Z               "line": 87
2026-06-22T02:23:00.3334416Z             },
2026-06-22T02:23:00.3334492Z             {
2026-06-22T02:23:00.3334620Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3334711Z               "line": 81
2026-06-22T02:23:00.3334793Z             },
2026-06-22T02:23:00.3334874Z             {
2026-06-22T02:23:00.3334997Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3335079Z               "line": 166
2026-06-22T02:23:00.3335164Z             },
2026-06-22T02:23:00.3335245Z             {
2026-06-22T02:23:00.3335345Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3335432Z               "line": 1645
2026-06-22T02:23:00.3335512Z             }
2026-06-22T02:23:00.3335597Z           ]
2026-06-22T02:23:00.3335685Z         },
2026-06-22T02:23:00.3335766Z         "int": {
2026-06-22T02:23:00.3335861Z           "complete": false,
2026-06-22T02:23:00.3335946Z           "evidence": []
2026-06-22T02:23:00.3336028Z         },
2026-06-22T02:23:00.3336109Z         "unit": {
2026-06-22T02:23:00.3336204Z           "complete": true,
2026-06-22T02:23:00.3336280Z           "evidence": [
2026-06-22T02:23:00.3336367Z             {
2026-06-22T02:23:00.3336475Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.3336570Z               "line": 623
2026-06-22T02:23:00.3336655Z             },
2026-06-22T02:23:00.3336736Z             {
2026-06-22T02:23:00.3336853Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.3336934Z               "line": 212
2026-06-22T02:23:00.3337026Z             },
2026-06-22T02:23:00.3337107Z             {
2026-06-22T02:23:00.3337211Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.3337292Z               "line": 307
2026-06-22T02:23:00.3337374Z             },
2026-06-22T02:23:00.3337450Z             {
2026-06-22T02:23:00.3337554Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3337646Z               "line": 7724
2026-06-22T02:23:00.3337731Z             },
2026-06-22T02:23:00.3337816Z             {
2026-06-22T02:23:00.3337927Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3338017Z               "line": 7751
2026-06-22T02:23:00.3338093Z             }
2026-06-22T02:23:00.3338174Z           ]
2026-06-22T02:23:00.3338256Z         }
2026-06-22T02:23:00.3338332Z       }
2026-06-22T02:23:00.3338418Z     },
2026-06-22T02:23:00.3338494Z     {
2026-06-22T02:23:00.3338576Z       "id": "REQ-FRONT-1",
2026-06-22T02:23:00.3338747Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-22T02:23:00.3338837Z       "requiredStages": [],
2026-06-22T02:23:00.3338920Z       "stages": {
2026-06-22T02:23:00.3339071Z         "doc": {
2026-06-22T02:23:00.3339162Z           "complete": false,
2026-06-22T02:23:00.3339244Z           "evidence": []
2026-06-22T02:23:00.3339328Z         },
2026-06-22T02:23:00.3339413Z         "impl": {
2026-06-22T02:23:00.3339494Z           "complete": false,
2026-06-22T02:23:00.3339585Z           "evidence": []
2026-06-22T02:23:00.3339668Z         },
2026-06-22T02:23:00.3339749Z         "int": {
2026-06-22T02:23:00.3339840Z           "complete": false,
2026-06-22T02:23:00.3339926Z           "evidence": []
2026-06-22T02:23:00.3340011Z         },
2026-06-22T02:23:00.3340092Z         "unit": {
2026-06-22T02:23:00.3340189Z           "complete": false,
2026-06-22T02:23:00.3340274Z           "evidence": []
2026-06-22T02:23:00.3340354Z         }
2026-06-22T02:23:00.3340435Z       }
2026-06-22T02:23:00.3340518Z     },
2026-06-22T02:23:00.3340603Z     {
2026-06-22T02:23:00.3340707Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-22T02:23:00.3345925Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-22T02:23:00.3346245Z       "requiredStages": [
2026-06-22T02:23:00.3346326Z         "int"
2026-06-22T02:23:00.3346411Z       ],
2026-06-22T02:23:00.3346496Z       "stages": {
2026-06-22T02:23:00.3346583Z         "doc": {
2026-06-22T02:23:00.3346678Z           "complete": false,
2026-06-22T02:23:00.3346759Z           "evidence": []
2026-06-22T02:23:00.3346845Z         },
2026-06-22T02:23:00.3346927Z         "impl": {
2026-06-22T02:23:00.3347026Z           "complete": false,
2026-06-22T02:23:00.3347106Z           "evidence": []
2026-06-22T02:23:00.3347201Z         },
2026-06-22T02:23:00.3347287Z         "int": {
2026-06-22T02:23:00.3347376Z           "complete": true,
2026-06-22T02:23:00.3347480Z           "evidence": [
2026-06-22T02:23:00.3347561Z             {
2026-06-22T02:23:00.3347681Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T02:23:00.3347766Z               "line": 300
2026-06-22T02:23:00.3347848Z             }
2026-06-22T02:23:00.3347934Z           ]
2026-06-22T02:23:00.3348010Z         },
2026-06-22T02:23:00.3348095Z         "unit": {
2026-06-22T02:23:00.3348182Z           "complete": false,
2026-06-22T02:23:00.3348277Z           "evidence": []
2026-06-22T02:23:00.3348357Z         }
2026-06-22T02:23:00.3348438Z       }
2026-06-22T02:23:00.3348521Z     },
2026-06-22T02:23:00.3348606Z     {
2026-06-22T02:23:00.3348715Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-22T02:23:00.3351301Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-22T02:23:00.3351417Z       "requiredStages": [
2026-06-22T02:23:00.3351496Z         "impl",
2026-06-22T02:23:00.3351582Z         "unit",
2026-06-22T02:23:00.3351669Z         "int"
2026-06-22T02:23:00.3351859Z       ],
2026-06-22T02:23:00.3351945Z       "stages": {
2026-06-22T02:23:00.3352027Z         "doc": {
2026-06-22T02:23:00.3352217Z           "complete": false,
2026-06-22T02:23:00.3352299Z           "evidence": []
2026-06-22T02:23:00.3352376Z         },
2026-06-22T02:23:00.3352459Z         "impl": {
2026-06-22T02:23:00.3352549Z           "complete": true,
2026-06-22T02:23:00.3352635Z           "evidence": [
2026-06-22T02:23:00.3352721Z             {
2026-06-22T02:23:00.3352828Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3352918Z               "line": 257
2026-06-22T02:23:00.3353000Z             }
2026-06-22T02:23:00.3353082Z           ]
2026-06-22T02:23:00.3353162Z         },
2026-06-22T02:23:00.3353248Z         "int": {
2026-06-22T02:23:00.3353330Z           "complete": true,
2026-06-22T02:23:00.3353420Z           "evidence": [
2026-06-22T02:23:00.3353505Z             {
2026-06-22T02:23:00.3353640Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-22T02:23:00.3353740Z               "line": 93
2026-06-22T02:23:00.3353810Z             }
2026-06-22T02:23:00.3353892Z           ]
2026-06-22T02:23:00.3353973Z         },
2026-06-22T02:23:00.3354049Z         "unit": {
2026-06-22T02:23:00.3354149Z           "complete": true,
2026-06-22T02:23:00.3354235Z           "evidence": [
2026-06-22T02:23:00.3354321Z             {
2026-06-22T02:23:00.3354431Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3354521Z               "line": 802
2026-06-22T02:23:00.3354603Z             },
2026-06-22T02:23:00.3354688Z             {
2026-06-22T02:23:00.3354803Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3354885Z               "line": 824
2026-06-22T02:23:00.3354970Z             },
2026-06-22T02:23:00.3355055Z             {
2026-06-22T02:23:00.3355166Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3355252Z               "line": 855
2026-06-22T02:23:00.3355331Z             }
2026-06-22T02:23:00.3355421Z           ]
2026-06-22T02:23:00.3355502Z         }
2026-06-22T02:23:00.3355589Z       }
2026-06-22T02:23:00.3355670Z     },
2026-06-22T02:23:00.3355759Z     {
2026-06-22T02:23:00.3355879Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-22T02:23:00.3358293Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-22T02:23:00.3358398Z       "requiredStages": [
2026-06-22T02:23:00.3358485Z         "doc",
2026-06-22T02:23:00.3358565Z         "impl",
2026-06-22T02:23:00.3358645Z         "unit",
2026-06-22T02:23:00.3358733Z         "int"
2026-06-22T02:23:00.3358814Z       ],
2026-06-22T02:23:00.3358903Z       "stages": {
2026-06-22T02:23:00.3359071Z         "doc": {
2026-06-22T02:23:00.3359156Z           "complete": true,
2026-06-22T02:23:00.3359247Z           "evidence": [
2026-06-22T02:23:00.3359328Z             {
2026-06-22T02:23:00.3359438Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3359519Z               "line": 333
2026-06-22T02:23:00.3359609Z             }
2026-06-22T02:23:00.3359691Z           ]
2026-06-22T02:23:00.3359767Z         },
2026-06-22T02:23:00.3359852Z         "impl": {
2026-06-22T02:23:00.3359938Z           "complete": true,
2026-06-22T02:23:00.3360020Z           "evidence": [
2026-06-22T02:23:00.3360210Z             {
2026-06-22T02:23:00.3360331Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3360514Z               "line": 494
2026-06-22T02:23:00.3360604Z             },
2026-06-22T02:23:00.3360681Z             {
2026-06-22T02:23:00.3360808Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3360898Z               "line": 499
2026-06-22T02:23:00.3360974Z             },
2026-06-22T02:23:00.3361056Z             {
2026-06-22T02:23:00.3361174Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3361260Z               "line": 874
2026-06-22T02:23:00.3361338Z             },
2026-06-22T02:23:00.3361414Z             {
2026-06-22T02:23:00.3361541Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3361619Z               "line": 915
2026-06-22T02:23:00.3361709Z             },
2026-06-22T02:23:00.3361790Z             {
2026-06-22T02:23:00.3361909Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3362014Z               "line": 926
2026-06-22T02:23:00.3362095Z             },
2026-06-22T02:23:00.3362181Z             {
2026-06-22T02:23:00.3362301Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.3362395Z               "line": 358
2026-06-22T02:23:00.3362476Z             }
2026-06-22T02:23:00.3362554Z           ]
2026-06-22T02:23:00.3362635Z         },
2026-06-22T02:23:00.3362719Z         "int": {
2026-06-22T02:23:00.3362815Z           "complete": true,
2026-06-22T02:23:00.3362902Z           "evidence": [
2026-06-22T02:23:00.3362987Z             {
2026-06-22T02:23:00.3363119Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-22T02:23:00.3363205Z               "line": 30
2026-06-22T02:23:00.3363286Z             }
2026-06-22T02:23:00.3363364Z           ]
2026-06-22T02:23:00.3363450Z         },
2026-06-22T02:23:00.3363536Z         "unit": {
2026-06-22T02:23:00.3363628Z           "complete": true,
2026-06-22T02:23:00.3363713Z           "evidence": [
2026-06-22T02:23:00.3363803Z             {
2026-06-22T02:23:00.3363923Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3364008Z               "line": 1493
2026-06-22T02:23:00.3364094Z             },
2026-06-22T02:23:00.3364176Z             {
2026-06-22T02:23:00.3364295Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3364385Z               "line": 1518
2026-06-22T02:23:00.3364467Z             },
2026-06-22T02:23:00.3364539Z             {
2026-06-22T02:23:00.3364657Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3364738Z               "line": 1535
2026-06-22T02:23:00.3364810Z             },
2026-06-22T02:23:00.3364886Z             {
2026-06-22T02:23:00.3364995Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3365076Z               "line": 1578
2026-06-22T02:23:00.3365164Z             }
2026-06-22T02:23:00.3365238Z           ]
2026-06-22T02:23:00.3365324Z         }
2026-06-22T02:23:00.3365396Z       }
2026-06-22T02:23:00.3365479Z     },
2026-06-22T02:23:00.3365562Z     {
2026-06-22T02:23:00.3365701Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-22T02:23:00.3368255Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-22T02:23:00.3368658Z       "requiredStages": [],
2026-06-22T02:23:00.3368740Z       "stages": {
2026-06-22T02:23:00.3368820Z         "doc": {
2026-06-22T02:23:00.3368910Z           "complete": false,
2026-06-22T02:23:00.3369082Z           "evidence": []
2026-06-22T02:23:00.3369154Z         },
2026-06-22T02:23:00.3369244Z         "impl": {
2026-06-22T02:23:00.3369336Z           "complete": false,
2026-06-22T02:23:00.3369421Z           "evidence": []
2026-06-22T02:23:00.3369506Z         },
2026-06-22T02:23:00.3369583Z         "int": {
2026-06-22T02:23:00.3369679Z           "complete": false,
2026-06-22T02:23:00.3369764Z           "evidence": []
2026-06-22T02:23:00.3369844Z         },
2026-06-22T02:23:00.3369927Z         "unit": {
2026-06-22T02:23:00.3370008Z           "complete": false,
2026-06-22T02:23:00.3370093Z           "evidence": []
2026-06-22T02:23:00.3370169Z         }
2026-06-22T02:23:00.3370266Z       }
2026-06-22T02:23:00.3370346Z     },
2026-06-22T02:23:00.3370427Z     {
2026-06-22T02:23:00.3370557Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-22T02:23:00.3374212Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-22T02:23:00.3374325Z       "requiredStages": [
2026-06-22T02:23:00.3374411Z         "impl",
2026-06-22T02:23:00.3374497Z         "unit",
2026-06-22T02:23:00.3374583Z         "int"
2026-06-22T02:23:00.3374668Z       ],
2026-06-22T02:23:00.3374755Z       "stages": {
2026-06-22T02:23:00.3374850Z         "doc": {
2026-06-22T02:23:00.3374930Z           "complete": false,
2026-06-22T02:23:00.3375022Z           "evidence": []
2026-06-22T02:23:00.3375104Z         },
2026-06-22T02:23:00.3375193Z         "impl": {
2026-06-22T02:23:00.3375284Z           "complete": true,
2026-06-22T02:23:00.3375365Z           "evidence": [
2026-06-22T02:23:00.3375451Z             {
2026-06-22T02:23:00.3375579Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3375671Z               "line": 570
2026-06-22T02:23:00.3375747Z             },
2026-06-22T02:23:00.3375831Z             {
2026-06-22T02:23:00.3375951Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3376029Z               "line": 594
2026-06-22T02:23:00.3376109Z             },
2026-06-22T02:23:00.3376190Z             {
2026-06-22T02:23:00.3376310Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3376405Z               "line": 620
2026-06-22T02:23:00.3376489Z             },
2026-06-22T02:23:00.3376574Z             {
2026-06-22T02:23:00.3376690Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3379432Z               "line": 679
2026-06-22T02:23:00.3379538Z             },
2026-06-22T02:23:00.3379770Z             {
2026-06-22T02:23:00.3379905Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3380080Z               "line": 89
2026-06-22T02:23:00.3380168Z             },
2026-06-22T02:23:00.3380248Z             {
2026-06-22T02:23:00.3380372Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3380448Z               "line": 134
2026-06-22T02:23:00.3380534Z             }
2026-06-22T02:23:00.3380620Z           ]
2026-06-22T02:23:00.3380706Z         },
2026-06-22T02:23:00.3380782Z         "int": {
2026-06-22T02:23:00.3380878Z           "complete": true,
2026-06-22T02:23:00.3380967Z           "evidence": [
2026-06-22T02:23:00.3381044Z             {
2026-06-22T02:23:00.3381202Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-22T02:23:00.3381296Z               "line": 20
2026-06-22T02:23:00.3381378Z             }
2026-06-22T02:23:00.3381456Z           ]
2026-06-22T02:23:00.3381536Z         },
2026-06-22T02:23:00.3381634Z         "unit": {
2026-06-22T02:23:00.3381720Z           "complete": true,
2026-06-22T02:23:00.3381815Z           "evidence": [
2026-06-22T02:23:00.3381895Z             {
2026-06-22T02:23:00.3382008Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3382100Z               "line": 1047
2026-06-22T02:23:00.3382172Z             },
2026-06-22T02:23:00.3382252Z             {
2026-06-22T02:23:00.3382362Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3382448Z               "line": 445
2026-06-22T02:23:00.3382524Z             }
2026-06-22T02:23:00.3382595Z           ]
2026-06-22T02:23:00.3382676Z         }
2026-06-22T02:23:00.3382753Z       }
2026-06-22T02:23:00.3382825Z     },
2026-06-22T02:23:00.3382905Z     {
2026-06-22T02:23:00.3383034Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-22T02:23:00.3385630Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-22T02:23:00.3385739Z       "requiredStages": [
2026-06-22T02:23:00.3385824Z         "doc",
2026-06-22T02:23:00.3385911Z         "impl",
2026-06-22T02:23:00.3385993Z         "unit",
2026-06-22T02:23:00.3386073Z         "int"
2026-06-22T02:23:00.3386158Z       ],
2026-06-22T02:23:00.3386245Z       "stages": {
2026-06-22T02:23:00.3386331Z         "doc": {
2026-06-22T02:23:00.3386411Z           "complete": true,
2026-06-22T02:23:00.3386502Z           "evidence": [
2026-06-22T02:23:00.3386584Z             {
2026-06-22T02:23:00.3386702Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3386783Z               "line": 302
2026-06-22T02:23:00.3386861Z             }
2026-06-22T02:23:00.3386947Z           ]
2026-06-22T02:23:00.3387026Z         },
2026-06-22T02:23:00.3387116Z         "impl": {
2026-06-22T02:23:00.3387206Z           "complete": true,
2026-06-22T02:23:00.3387298Z           "evidence": [
2026-06-22T02:23:00.3387378Z             {
2026-06-22T02:23:00.3387507Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.3387593Z               "line": 108
2026-06-22T02:23:00.3387674Z             },
2026-06-22T02:23:00.3387755Z             {
2026-06-22T02:23:00.3387866Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3387960Z               "line": 921
2026-06-22T02:23:00.3388132Z             },
2026-06-22T02:23:00.3388209Z             {
2026-06-22T02:23:00.3388398Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3388476Z               "line": 1137
2026-06-22T02:23:00.3388561Z             },
2026-06-22T02:23:00.3388647Z             {
2026-06-22T02:23:00.3388766Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3388853Z               "line": 23
2026-06-22T02:23:00.3388928Z             },
2026-06-22T02:23:00.3389100Z             {
2026-06-22T02:23:00.3389210Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3389299Z               "line": 113
2026-06-22T02:23:00.3389380Z             },
2026-06-22T02:23:00.3389461Z             {
2026-06-22T02:23:00.3389583Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3389673Z               "line": 158
2026-06-22T02:23:00.3389749Z             },
2026-06-22T02:23:00.3389831Z             {
2026-06-22T02:23:00.3389959Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3390040Z               "line": 218
2026-06-22T02:23:00.3390131Z             },
2026-06-22T02:23:00.3390212Z             {
2026-06-22T02:23:00.3390326Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3390408Z               "line": 261
2026-06-22T02:23:00.3390475Z             },
2026-06-22T02:23:00.3390565Z             {
2026-06-22T02:23:00.3390679Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3390766Z               "line": 275
2026-06-22T02:23:00.3390851Z             },
2026-06-22T02:23:00.3390932Z             {
2026-06-22T02:23:00.3391047Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3391128Z               "line": 320
2026-06-22T02:23:00.3391209Z             },
2026-06-22T02:23:00.3391285Z             {
2026-06-22T02:23:00.3391405Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3391495Z               "line": 347
2026-06-22T02:23:00.3391576Z             },
2026-06-22T02:23:00.3391653Z             {
2026-06-22T02:23:00.3391767Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3391852Z               "line": 359
2026-06-22T02:23:00.3391929Z             },
2026-06-22T02:23:00.3392006Z             {
2026-06-22T02:23:00.3392124Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3392204Z               "line": 373
2026-06-22T02:23:00.3392285Z             },
2026-06-22T02:23:00.3392366Z             {
2026-06-22T02:23:00.3392474Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3392563Z               "line": 400
2026-06-22T02:23:00.3392645Z             },
2026-06-22T02:23:00.3392732Z             {
2026-06-22T02:23:00.3392836Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3392922Z               "line": 643
2026-06-22T02:23:00.3393003Z             },
2026-06-22T02:23:00.3393094Z             {
2026-06-22T02:23:00.3393207Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3393300Z               "line": 989
2026-06-22T02:23:00.3393380Z             },
2026-06-22T02:23:00.3393461Z             {
2026-06-22T02:23:00.3393580Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3393657Z               "line": 274
2026-06-22T02:23:00.3393742Z             },
2026-06-22T02:23:00.3393828Z             {
2026-06-22T02:23:00.3393939Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3394019Z               "line": 1192
2026-06-22T02:23:00.3394099Z             },
2026-06-22T02:23:00.3394180Z             {
2026-06-22T02:23:00.3394281Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3394367Z               "line": 1264
2026-06-22T02:23:00.3394443Z             },
2026-06-22T02:23:00.3394525Z             {
2026-06-22T02:23:00.3394639Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3394847Z               "line": 1276
2026-06-22T02:23:00.3394933Z             },
2026-06-22T02:23:00.3395097Z             {
2026-06-22T02:23:00.3395217Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3395303Z               "line": 1894
2026-06-22T02:23:00.3395388Z             },
2026-06-22T02:23:00.3395469Z             {
2026-06-22T02:23:00.3395575Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3395666Z               "line": 188
2026-06-22T02:23:00.3395750Z             },
2026-06-22T02:23:00.3395827Z             {
2026-06-22T02:23:00.3395937Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3396028Z               "line": 265
2026-06-22T02:23:00.3396108Z             },
2026-06-22T02:23:00.3396185Z             {
2026-06-22T02:23:00.3396303Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3396389Z               "line": 276
2026-06-22T02:23:00.3396476Z             },
2026-06-22T02:23:00.3396571Z             {
2026-06-22T02:23:00.3396681Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3396776Z               "line": 329
2026-06-22T02:23:00.3396848Z             },
2026-06-22T02:23:00.3396929Z             {
2026-06-22T02:23:00.3397048Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3397130Z               "line": 56
2026-06-22T02:23:00.3397211Z             },
2026-06-22T02:23:00.3397290Z             {
2026-06-22T02:23:00.3397406Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3397488Z               "line": 188
2026-06-22T02:23:00.3397572Z             },
2026-06-22T02:23:00.3397662Z             {
2026-06-22T02:23:00.3397767Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:23:00.3397858Z               "line": 82
2026-06-22T02:23:00.3397934Z             },
2026-06-22T02:23:00.3398024Z             {
2026-06-22T02:23:00.3398135Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3398230Z               "line": 308
2026-06-22T02:23:00.3398315Z             },
2026-06-22T02:23:00.3398401Z             {
2026-06-22T02:23:00.3398506Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.3398596Z               "line": 424
2026-06-22T02:23:00.3398677Z             },
2026-06-22T02:23:00.3398755Z             {
2026-06-22T02:23:00.3398858Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3399026Z               "line": 2006
2026-06-22T02:23:00.3399108Z             }
2026-06-22T02:23:00.3399183Z           ]
2026-06-22T02:23:00.3399259Z         },
2026-06-22T02:23:00.3399341Z         "int": {
2026-06-22T02:23:00.3399427Z           "complete": true,
2026-06-22T02:23:00.3399511Z           "evidence": [
2026-06-22T02:23:00.3399593Z             {
2026-06-22T02:23:00.3399709Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:23:00.3399789Z               "line": 57
2026-06-22T02:23:00.3399869Z             },
2026-06-22T02:23:00.3399949Z             {
2026-06-22T02:23:00.3400064Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T02:23:00.3400152Z               "line": 41
2026-06-22T02:23:00.3400233Z             }
2026-06-22T02:23:00.3400314Z           ]
2026-06-22T02:23:00.3400391Z         },
2026-06-22T02:23:00.3400476Z         "unit": {
2026-06-22T02:23:00.3400557Z           "complete": true,
2026-06-22T02:23:00.3400643Z           "evidence": [
2026-06-22T02:23:00.3400730Z             {
2026-06-22T02:23:00.3400843Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.3400924Z               "line": 532
2026-06-22T02:23:00.3401002Z             },
2026-06-22T02:23:00.3401082Z             {
2026-06-22T02:23:00.3401191Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.3401273Z               "line": 757
2026-06-22T02:23:00.3401363Z             },
2026-06-22T02:23:00.3401449Z             {
2026-06-22T02:23:00.3401563Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3401755Z               "line": 1067
2026-06-22T02:23:00.3401831Z             },
2026-06-22T02:23:00.3402007Z             {
2026-06-22T02:23:00.3402122Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3402213Z               "line": 1101
2026-06-22T02:23:00.3402299Z             },
2026-06-22T02:23:00.3402374Z             {
2026-06-22T02:23:00.3402489Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3402571Z               "line": 1143
2026-06-22T02:23:00.3402656Z             },
2026-06-22T02:23:00.3402736Z             {
2026-06-22T02:23:00.3402850Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3402931Z               "line": 1215
2026-06-22T02:23:00.3403010Z             },
2026-06-22T02:23:00.3403096Z             {
2026-06-22T02:23:00.3403205Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3403292Z               "line": 1228
2026-06-22T02:23:00.3403377Z             },
2026-06-22T02:23:00.3403457Z             {
2026-06-22T02:23:00.3403568Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3403659Z               "line": 1251
2026-06-22T02:23:00.3403739Z             },
2026-06-22T02:23:00.3403825Z             {
2026-06-22T02:23:00.3403935Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3404021Z               "line": 1277
2026-06-22T02:23:00.3404101Z             },
2026-06-22T02:23:00.3404184Z             {
2026-06-22T02:23:00.3404302Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3404383Z               "line": 1291
2026-06-22T02:23:00.3404455Z             },
2026-06-22T02:23:00.3404536Z             {
2026-06-22T02:23:00.3404650Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3404726Z               "line": 1315
2026-06-22T02:23:00.3404809Z             },
2026-06-22T02:23:00.3404889Z             {
2026-06-22T02:23:00.3405008Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3405090Z               "line": 1447
2026-06-22T02:23:00.3405176Z             },
2026-06-22T02:23:00.3405260Z             {
2026-06-22T02:23:00.3405373Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3405460Z               "line": 1623
2026-06-22T02:23:00.3405540Z             },
2026-06-22T02:23:00.3405620Z             {
2026-06-22T02:23:00.3405724Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3405815Z               "line": 1678
2026-06-22T02:23:00.3405897Z             },
2026-06-22T02:23:00.3405977Z             {
2026-06-22T02:23:00.3406092Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3406174Z               "line": 1724
2026-06-22T02:23:00.3406254Z             },
2026-06-22T02:23:00.3406339Z             {
2026-06-22T02:23:00.3406450Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3406545Z               "line": 1769
2026-06-22T02:23:00.3406621Z             },
2026-06-22T02:23:00.3406702Z             {
2026-06-22T02:23:00.3406812Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3406903Z               "line": 1813
2026-06-22T02:23:00.3406983Z             },
2026-06-22T02:23:00.3407065Z             {
2026-06-22T02:23:00.3407179Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3407264Z               "line": 1855
2026-06-22T02:23:00.3407351Z             },
2026-06-22T02:23:00.3407423Z             {
2026-06-22T02:23:00.3407531Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3407612Z               "line": 2229
2026-06-22T02:23:00.3407686Z             },
2026-06-22T02:23:00.3407766Z             {
2026-06-22T02:23:00.3407870Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3407961Z               "line": 217
2026-06-22T02:23:00.3408038Z             },
2026-06-22T02:23:00.3408193Z             {
2026-06-22T02:23:00.3408312Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3408466Z               "line": 233
2026-06-22T02:23:00.3408550Z             },
2026-06-22T02:23:00.3408622Z             {
2026-06-22T02:23:00.3408737Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3408818Z               "line": 254
2026-06-22T02:23:00.3408889Z             },
2026-06-22T02:23:00.3409061Z             {
2026-06-22T02:23:00.3409180Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3409271Z               "line": 265
2026-06-22T02:23:00.3409353Z             },
2026-06-22T02:23:00.3409438Z             {
2026-06-22T02:23:00.3409538Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3409625Z               "line": 278
2026-06-22T02:23:00.3409705Z             },
2026-06-22T02:23:00.3409786Z             {
2026-06-22T02:23:00.3409891Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3409987Z               "line": 289
2026-06-22T02:23:00.3410071Z             },
2026-06-22T02:23:00.3410148Z             {
2026-06-22T02:23:00.3410254Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3410349Z               "line": 301
2026-06-22T02:23:00.3410419Z             },
2026-06-22T02:23:00.3410504Z             {
2026-06-22T02:23:00.3410605Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3410690Z               "line": 312
2026-06-22T02:23:00.3410770Z             },
2026-06-22T02:23:00.3410850Z             {
2026-06-22T02:23:00.3410966Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3411051Z               "line": 323
2026-06-22T02:23:00.3411137Z             },
2026-06-22T02:23:00.3411204Z             {
2026-06-22T02:23:00.3411313Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3411398Z               "line": 332
2026-06-22T02:23:00.3411479Z             },
2026-06-22T02:23:00.3411557Z             {
2026-06-22T02:23:00.3411662Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3411756Z               "line": 342
2026-06-22T02:23:00.3411838Z             },
2026-06-22T02:23:00.3411919Z             {
2026-06-22T02:23:00.3412038Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:23:00.3412119Z               "line": 358
2026-06-22T02:23:00.3412201Z             },
2026-06-22T02:23:00.3412276Z             {
2026-06-22T02:23:00.3412395Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3412497Z               "line": 758
2026-06-22T02:23:00.3412582Z             },
2026-06-22T02:23:00.3412658Z             {
2026-06-22T02:23:00.3412773Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3412850Z               "line": 794
2026-06-22T02:23:00.3412920Z             },
2026-06-22T02:23:00.3413006Z             {
2026-06-22T02:23:00.3413117Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.3413207Z               "line": 966
2026-06-22T02:23:00.3413287Z             },
2026-06-22T02:23:00.3413376Z             {
2026-06-22T02:23:00.3413482Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:23:00.3426394Z               "line": 145
2026-06-22T02:23:00.3426498Z             },
2026-06-22T02:23:00.3426585Z             {
2026-06-22T02:23:00.3426725Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:23:00.3426820Z               "line": 224
2026-06-22T02:23:00.3426892Z             },
2026-06-22T02:23:00.3426974Z             {
2026-06-22T02:23:00.3427097Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:23:00.3427188Z               "line": 293
2026-06-22T02:23:00.3427270Z             },
2026-06-22T02:23:00.3427351Z             {
2026-06-22T02:23:00.3427474Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T02:23:00.3427565Z               "line": 17
2026-06-22T02:23:00.3427842Z             },
2026-06-22T02:23:00.3427927Z             {
2026-06-22T02:23:00.3428046Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T02:23:00.3428233Z               "line": 104
2026-06-22T02:23:00.3428309Z             }
2026-06-22T02:23:00.3428394Z           ]
2026-06-22T02:23:00.3428471Z         }
2026-06-22T02:23:00.3428557Z       }
2026-06-22T02:23:00.3428637Z     },
2026-06-22T02:23:00.3428719Z     {
2026-06-22T02:23:00.3428835Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-22T02:23:00.3431990Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-22T02:23:00.3432120Z       "requiredStages": [
2026-06-22T02:23:00.3432209Z         "doc",
2026-06-22T02:23:00.3432290Z         "impl",
2026-06-22T02:23:00.3432372Z         "unit",
2026-06-22T02:23:00.3432453Z         "int"
2026-06-22T02:23:00.3432538Z       ],
2026-06-22T02:23:00.3432629Z       "stages": {
2026-06-22T02:23:00.3432706Z         "doc": {
2026-06-22T02:23:00.3432801Z           "complete": true,
2026-06-22T02:23:00.3432886Z           "evidence": [
2026-06-22T02:23:00.3432968Z             {
2026-06-22T02:23:00.3433077Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3433186Z               "line": 388
2026-06-22T02:23:00.3433268Z             }
2026-06-22T02:23:00.3433350Z           ]
2026-06-22T02:23:00.3433435Z         },
2026-06-22T02:23:00.3433515Z         "impl": {
2026-06-22T02:23:00.3433612Z           "complete": true,
2026-06-22T02:23:00.3433698Z           "evidence": [
2026-06-22T02:23:00.3433783Z             {
2026-06-22T02:23:00.3433908Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3433989Z               "line": 773
2026-06-22T02:23:00.3434078Z             },
2026-06-22T02:23:00.3434159Z             {
2026-06-22T02:23:00.3434270Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3434356Z               "line": 796
2026-06-22T02:23:00.3434440Z             }
2026-06-22T02:23:00.3434515Z           ]
2026-06-22T02:23:00.3434592Z         },
2026-06-22T02:23:00.3434682Z         "int": {
2026-06-22T02:23:00.3434766Z           "complete": true,
2026-06-22T02:23:00.3434852Z           "evidence": [
2026-06-22T02:23:00.3434944Z             {
2026-06-22T02:23:00.3435067Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:23:00.3435157Z               "line": 228
2026-06-22T02:23:00.3435235Z             },
2026-06-22T02:23:00.3435315Z             {
2026-06-22T02:23:00.3435434Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:23:00.3435525Z               "line": 468
2026-06-22T02:23:00.3435606Z             }
2026-06-22T02:23:00.3435692Z           ]
2026-06-22T02:23:00.3435777Z         },
2026-06-22T02:23:00.3435859Z         "unit": {
2026-06-22T02:23:00.3435954Z           "complete": true,
2026-06-22T02:23:00.3436044Z           "evidence": [
2026-06-22T02:23:00.3436130Z             {
2026-06-22T02:23:00.3436245Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.3436335Z               "line": 1495
2026-06-22T02:23:00.3436556Z             }
2026-06-22T02:23:00.3436635Z           ]
2026-06-22T02:23:00.3436722Z         }
2026-06-22T02:23:00.3436898Z       }
2026-06-22T02:23:00.3436983Z     },
2026-06-22T02:23:00.3437058Z     {
2026-06-22T02:23:00.3437183Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-22T02:23:00.3440795Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-22T02:23:00.3440913Z       "requiredStages": [
2026-06-22T02:23:00.3440981Z         "doc",
2026-06-22T02:23:00.3441066Z         "impl",
2026-06-22T02:23:00.3441147Z         "unit"
2026-06-22T02:23:00.3441232Z       ],
2026-06-22T02:23:00.3441319Z       "stages": {
2026-06-22T02:23:00.3441404Z         "doc": {
2026-06-22T02:23:00.3441485Z           "complete": true,
2026-06-22T02:23:00.3441562Z           "evidence": [
2026-06-22T02:23:00.3441648Z             {
2026-06-22T02:23:00.3441747Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3441838Z               "line": 395
2026-06-22T02:23:00.3441920Z             }
2026-06-22T02:23:00.3441992Z           ]
2026-06-22T02:23:00.3442076Z         },
2026-06-22T02:23:00.3442157Z         "impl": {
2026-06-22T02:23:00.3442252Z           "complete": true,
2026-06-22T02:23:00.3442328Z           "evidence": [
2026-06-22T02:23:00.3442412Z             {
2026-06-22T02:23:00.3442531Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3442612Z               "line": 75
2026-06-22T02:23:00.3442694Z             }
2026-06-22T02:23:00.3442774Z           ]
2026-06-22T02:23:00.3442855Z         },
2026-06-22T02:23:00.3442932Z         "int": {
2026-06-22T02:23:00.3443018Z           "complete": false,
2026-06-22T02:23:00.3443112Z           "evidence": []
2026-06-22T02:23:00.3443194Z         },
2026-06-22T02:23:00.3443281Z         "unit": {
2026-06-22T02:23:00.3443375Z           "complete": true,
2026-06-22T02:23:00.3443460Z           "evidence": [
2026-06-22T02:23:00.3443543Z             {
2026-06-22T02:23:00.3443656Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3443747Z               "line": 632
2026-06-22T02:23:00.3443833Z             }
2026-06-22T02:23:00.3443919Z           ]
2026-06-22T02:23:00.3444000Z         }
2026-06-22T02:23:00.3444085Z       }
2026-06-22T02:23:00.3444168Z     },
2026-06-22T02:23:00.3444239Z     {
2026-06-22T02:23:00.3444348Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-22T02:23:00.3444516Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-22T02:23:00.3444615Z       "requiredStages": [
2026-06-22T02:23:00.3444691Z         "impl",
2026-06-22T02:23:00.3444768Z         "unit"
2026-06-22T02:23:00.3444845Z       ],
2026-06-22T02:23:00.3444939Z       "stages": {
2026-06-22T02:23:00.3445019Z         "doc": {
2026-06-22T02:23:00.3445114Z           "complete": false,
2026-06-22T02:23:00.3445307Z           "evidence": []
2026-06-22T02:23:00.3445393Z         },
2026-06-22T02:23:00.3445474Z         "impl": {
2026-06-22T02:23:00.3445641Z           "complete": true,
2026-06-22T02:23:00.3445736Z           "evidence": [
2026-06-22T02:23:00.3445824Z             {
2026-06-22T02:23:00.3445942Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.3446037Z               "line": 172
2026-06-22T02:23:00.3446114Z             },
2026-06-22T02:23:00.3446204Z             {
2026-06-22T02:23:00.3446313Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.3446405Z               "line": 18
2026-06-22T02:23:00.3446491Z             },
2026-06-22T02:23:00.3446572Z             {
2026-06-22T02:23:00.3446681Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.3446763Z               "line": 100
2026-06-22T02:23:00.3446843Z             }
2026-06-22T02:23:00.3446924Z           ]
2026-06-22T02:23:00.3446996Z         },
2026-06-22T02:23:00.3447082Z         "int": {
2026-06-22T02:23:00.3447181Z           "complete": false,
2026-06-22T02:23:00.3447272Z           "evidence": []
2026-06-22T02:23:00.3447364Z         },
2026-06-22T02:23:00.3447440Z         "unit": {
2026-06-22T02:23:00.3447529Z           "complete": true,
2026-06-22T02:23:00.3447619Z           "evidence": [
2026-06-22T02:23:00.3447705Z             {
2026-06-22T02:23:00.3447813Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.3447903Z               "line": 857
2026-06-22T02:23:00.3447989Z             },
2026-06-22T02:23:00.3448070Z             {
2026-06-22T02:23:00.3448170Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.3448256Z               "line": 161
2026-06-22T02:23:00.3448337Z             },
2026-06-22T02:23:00.3448409Z             {
2026-06-22T02:23:00.3448517Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.3448598Z               "line": 233
2026-06-22T02:23:00.3448676Z             }
2026-06-22T02:23:00.3448761Z           ]
2026-06-22T02:23:00.3448851Z         }
2026-06-22T02:23:00.3448933Z       }
2026-06-22T02:23:00.3449095Z     },
2026-06-22T02:23:00.3449185Z     {
2026-06-22T02:23:00.3449291Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-22T02:23:00.3449710Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-22T02:23:00.3449801Z       "requiredStages": [
2026-06-22T02:23:00.3449882Z         "impl",
2026-06-22T02:23:00.3449974Z         "unit"
2026-06-22T02:23:00.3450039Z       ],
2026-06-22T02:23:00.3450125Z       "stages": {
2026-06-22T02:23:00.3450207Z         "doc": {
2026-06-22T02:23:00.3450293Z           "complete": true,
2026-06-22T02:23:00.3450382Z           "evidence": [
2026-06-22T02:23:00.3450463Z             {
2026-06-22T02:23:00.3450567Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3450654Z               "line": 220
2026-06-22T02:23:00.3450744Z             }
2026-06-22T02:23:00.3450815Z           ]
2026-06-22T02:23:00.3450892Z         },
2026-06-22T02:23:00.3450978Z         "impl": {
2026-06-22T02:23:00.3451063Z           "complete": true,
2026-06-22T02:23:00.3451153Z           "evidence": [
2026-06-22T02:23:00.3451236Z             {
2026-06-22T02:23:00.3451359Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.3451445Z               "line": 316
2026-06-22T02:23:00.3451526Z             },
2026-06-22T02:23:00.3451612Z             {
2026-06-22T02:23:00.3451730Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3451812Z               "line": 356
2026-06-22T02:23:00.3451894Z             },
2026-06-22T02:23:00.3451979Z             {
2026-06-22T02:23:00.3452084Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3452176Z               "line": 578
2026-06-22T02:23:00.3452265Z             },
2026-06-22T02:23:00.3452341Z             {
2026-06-22T02:23:00.3452461Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:23:00.3452651Z               "line": 77
2026-06-22T02:23:00.3452832Z             }
2026-06-22T02:23:00.3452911Z           ]
2026-06-22T02:23:00.3452996Z         },
2026-06-22T02:23:00.3453081Z         "int": {
2026-06-22T02:23:00.3453163Z           "complete": false,
2026-06-22T02:23:00.3453250Z           "evidence": []
2026-06-22T02:23:00.3453325Z         },
2026-06-22T02:23:00.3453406Z         "unit": {
2026-06-22T02:23:00.3453492Z           "complete": true,
2026-06-22T02:23:00.3453578Z           "evidence": [
2026-06-22T02:23:00.3453672Z             {
2026-06-22T02:23:00.3453784Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3453869Z               "line": 747
2026-06-22T02:23:00.3453949Z             },
2026-06-22T02:23:00.3454035Z             {
2026-06-22T02:23:00.3454146Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3454231Z               "line": 785
2026-06-22T02:23:00.3454325Z             },
2026-06-22T02:23:00.3454408Z             {
2026-06-22T02:23:00.3454536Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:23:00.3454627Z               "line": 166
2026-06-22T02:23:00.3454718Z             }
2026-06-22T02:23:00.3454799Z           ]
2026-06-22T02:23:00.3454884Z         }
2026-06-22T02:23:00.3454969Z       }
2026-06-22T02:23:00.3455038Z     },
2026-06-22T02:23:00.3455123Z     {
2026-06-22T02:23:00.3455242Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-22T02:23:00.3455779Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-22T02:23:00.3455873Z       "requiredStages": [
2026-06-22T02:23:00.3455953Z         "impl",
2026-06-22T02:23:00.3456044Z         "unit"
2026-06-22T02:23:00.3456121Z       ],
2026-06-22T02:23:00.3456201Z       "stages": {
2026-06-22T02:23:00.3456287Z         "doc": {
2026-06-22T02:23:00.3456393Z           "complete": false,
2026-06-22T02:23:00.3456488Z           "evidence": []
2026-06-22T02:23:00.3456573Z         },
2026-06-22T02:23:00.3456655Z         "impl": {
2026-06-22T02:23:00.3456741Z           "complete": true,
2026-06-22T02:23:00.3456831Z           "evidence": [
2026-06-22T02:23:00.3456907Z             {
2026-06-22T02:23:00.3457037Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:23:00.3457122Z               "line": 22
2026-06-22T02:23:00.3457202Z             },
2026-06-22T02:23:00.3457290Z             {
2026-06-22T02:23:00.3457399Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.3457489Z               "line": 487
2026-06-22T02:23:00.3457570Z             },
2026-06-22T02:23:00.3457657Z             {
2026-06-22T02:23:00.3457779Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:23:00.3457866Z               "line": 17
2026-06-22T02:23:00.3457953Z             },
2026-06-22T02:23:00.3458033Z             {
2026-06-22T02:23:00.3458151Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:23:00.3458237Z               "line": 147
2026-06-22T02:23:00.3458313Z             },
2026-06-22T02:23:00.3458397Z             {
2026-06-22T02:23:00.3458520Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3458611Z               "line": 226
2026-06-22T02:23:00.3458698Z             },
2026-06-22T02:23:00.3458782Z             {
2026-06-22T02:23:00.3458902Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3459059Z               "line": 251
2026-06-22T02:23:00.3459145Z             },
2026-06-22T02:23:00.3459227Z             {
2026-06-22T02:23:00.3459355Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3459435Z               "line": 277
2026-06-22T02:23:00.3459518Z             },
2026-06-22T02:23:00.3459599Z             {
2026-06-22T02:23:00.3459717Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.3459914Z               "line": 124
2026-06-22T02:23:00.3459994Z             },
2026-06-22T02:23:00.3460181Z             {
2026-06-22T02:23:00.3460298Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.3460389Z               "line": 224
2026-06-22T02:23:00.3460476Z             }
2026-06-22T02:23:00.3460562Z           ]
2026-06-22T02:23:00.3460641Z         },
2026-06-22T02:23:00.3460723Z         "int": {
2026-06-22T02:23:00.3460820Z           "complete": false,
2026-06-22T02:23:00.3460900Z           "evidence": []
2026-06-22T02:23:00.3460984Z         },
2026-06-22T02:23:00.3461069Z         "unit": {
2026-06-22T02:23:00.3461171Z           "complete": true,
2026-06-22T02:23:00.3461252Z           "evidence": [
2026-06-22T02:23:00.3461337Z             {
2026-06-22T02:23:00.3461461Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:23:00.3461543Z               "line": 63
2026-06-22T02:23:00.3461618Z             },
2026-06-22T02:23:00.3461718Z             {
2026-06-22T02:23:00.3461829Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:23:00.3465345Z               "line": 73
2026-06-22T02:23:00.3465449Z             },
2026-06-22T02:23:00.3465520Z             {
2026-06-22T02:23:00.3465659Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:23:00.3465749Z               "line": 85
2026-06-22T02:23:00.3465821Z             },
2026-06-22T02:23:00.3465907Z             {
2026-06-22T02:23:00.3466031Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:23:00.3466111Z               "line": 346
2026-06-22T02:23:00.3466196Z             },
2026-06-22T02:23:00.3466273Z             {
2026-06-22T02:23:00.3466399Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:23:00.3466494Z               "line": 281
2026-06-22T02:23:00.3466576Z             },
2026-06-22T02:23:00.3466658Z             {
2026-06-22T02:23:00.3466776Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:23:00.3466876Z               "line": 322
2026-06-22T02:23:00.3466958Z             },
2026-06-22T02:23:00.3467048Z             {
2026-06-22T02:23:00.3467152Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:23:00.3467234Z               "line": 360
2026-06-22T02:23:00.3467311Z             },
2026-06-22T02:23:00.3467386Z             {
2026-06-22T02:23:00.3467510Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3467592Z               "line": 688
2026-06-22T02:23:00.3467672Z             },
2026-06-22T02:23:00.3467753Z             {
2026-06-22T02:23:00.3467860Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.3467940Z               "line": 397
2026-06-22T02:23:00.3468020Z             },
2026-06-22T02:23:00.3468101Z             {
2026-06-22T02:23:00.3468212Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.3468297Z               "line": 440
2026-06-22T02:23:00.3468383Z             }
2026-06-22T02:23:00.3468465Z           ]
2026-06-22T02:23:00.3468546Z         }
2026-06-22T02:23:00.3468626Z       }
2026-06-22T02:23:00.3468711Z     },
2026-06-22T02:23:00.3468792Z     {
2026-06-22T02:23:00.3468896Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-22T02:23:00.3469191Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-22T02:23:00.3469286Z       "requiredStages": [
2026-06-22T02:23:00.3469366Z         "impl",
2026-06-22T02:23:00.3469448Z         "unit"
2026-06-22T02:23:00.3469534Z       ],
2026-06-22T02:23:00.3469615Z       "stages": {
2026-06-22T02:23:00.3469700Z         "doc": {
2026-06-22T02:23:00.3469801Z           "complete": false,
2026-06-22T02:23:00.3469886Z           "evidence": []
2026-06-22T02:23:00.3469972Z         },
2026-06-22T02:23:00.3470048Z         "impl": {
2026-06-22T02:23:00.3470130Z           "complete": true,
2026-06-22T02:23:00.3470220Z           "evidence": [
2026-06-22T02:23:00.3470296Z             {
2026-06-22T02:23:00.3470559Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:23:00.3470634Z               "line": 169
2026-06-22T02:23:00.3470798Z             }
2026-06-22T02:23:00.3470873Z           ]
2026-06-22T02:23:00.3470954Z         },
2026-06-22T02:23:00.3471037Z         "int": {
2026-06-22T02:23:00.3471127Z           "complete": true,
2026-06-22T02:23:00.3471216Z           "evidence": [
2026-06-22T02:23:00.3471293Z             {
2026-06-22T02:23:00.3471409Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T02:23:00.3471484Z               "line": 44
2026-06-22T02:23:00.3471559Z             },
2026-06-22T02:23:00.3471639Z             {
2026-06-22T02:23:00.3471750Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T02:23:00.3471831Z               "line": 66
2026-06-22T02:23:00.3471911Z             }
2026-06-22T02:23:00.3471993Z           ]
2026-06-22T02:23:00.3472074Z         },
2026-06-22T02:23:00.3472156Z         "unit": {
2026-06-22T02:23:00.3472236Z           "complete": true,
2026-06-22T02:23:00.3472332Z           "evidence": [
2026-06-22T02:23:00.3472413Z             {
2026-06-22T02:23:00.3472526Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:23:00.3472622Z               "line": 186
2026-06-22T02:23:00.3472700Z             },
2026-06-22T02:23:00.3472784Z             {
2026-06-22T02:23:00.3472889Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:23:00.3472976Z               "line": 238
2026-06-22T02:23:00.3473052Z             },
2026-06-22T02:23:00.3473133Z             {
2026-06-22T02:23:00.3473242Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:23:00.3473329Z               "line": 266
2026-06-22T02:23:00.3473409Z             }
2026-06-22T02:23:00.3473480Z           ]
2026-06-22T02:23:00.3473566Z         }
2026-06-22T02:23:00.3473649Z       }
2026-06-22T02:23:00.3473719Z     },
2026-06-22T02:23:00.3473799Z     {
2026-06-22T02:23:00.3473918Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-22T02:23:00.3480418Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-22T02:23:00.3480643Z       "requiredStages": [
2026-06-22T02:23:00.3480833Z         "impl",
2026-06-22T02:23:00.3480904Z         "unit",
2026-06-22T02:23:00.3480986Z         "int"
2026-06-22T02:23:00.3481067Z       ],
2026-06-22T02:23:00.3481143Z       "stages": {
2026-06-22T02:23:00.3481224Z         "doc": {
2026-06-22T02:23:00.3481306Z           "complete": false,
2026-06-22T02:23:00.3481400Z           "evidence": []
2026-06-22T02:23:00.3481477Z         },
2026-06-22T02:23:00.3481563Z         "impl": {
2026-06-22T02:23:00.3481649Z           "complete": true,
2026-06-22T02:23:00.3481738Z           "evidence": [
2026-06-22T02:23:00.3481815Z             {
2026-06-22T02:23:00.3481936Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.3482021Z               "line": 109
2026-06-22T02:23:00.3482095Z             },
2026-06-22T02:23:00.3482176Z             {
2026-06-22T02:23:00.3482281Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.3482382Z               "line": 156
2026-06-22T02:23:00.3482467Z             },
2026-06-22T02:23:00.3482548Z             {
2026-06-22T02:23:00.3482658Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.3482744Z               "line": 261
2026-06-22T02:23:00.3482829Z             },
2026-06-22T02:23:00.3482907Z             {
2026-06-22T02:23:00.3483026Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3483101Z               "line": 954
2026-06-22T02:23:00.3483187Z             }
2026-06-22T02:23:00.3483269Z           ]
2026-06-22T02:23:00.3483344Z         },
2026-06-22T02:23:00.3483425Z         "int": {
2026-06-22T02:23:00.3483512Z           "complete": true,
2026-06-22T02:23:00.3483603Z           "evidence": [
2026-06-22T02:23:00.3483678Z             {
2026-06-22T02:23:00.3483807Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.3483894Z               "line": 1051
2026-06-22T02:23:00.3483978Z             }
2026-06-22T02:23:00.3484059Z           ]
2026-06-22T02:23:00.3484136Z         },
2026-06-22T02:23:00.3484233Z         "unit": {
2026-06-22T02:23:00.3484312Z           "complete": true,
2026-06-22T02:23:00.3484397Z           "evidence": [
2026-06-22T02:23:00.3484478Z             {
2026-06-22T02:23:00.3484587Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3484676Z               "line": 1498
2026-06-22T02:23:00.3484756Z             }
2026-06-22T02:23:00.3484843Z           ]
2026-06-22T02:23:00.3484925Z         }
2026-06-22T02:23:00.3485014Z       }
2026-06-22T02:23:00.3485105Z     },
2026-06-22T02:23:00.3485182Z     {
2026-06-22T02:23:00.3485324Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-22T02:23:00.3488073Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-22T02:23:00.3488191Z       "requiredStages": [],
2026-06-22T02:23:00.3488282Z       "stages": {
2026-06-22T02:23:00.3488364Z         "doc": {
2026-06-22T02:23:00.3488459Z           "complete": false,
2026-06-22T02:23:00.3488554Z           "evidence": []
2026-06-22T02:23:00.3488707Z         },
2026-06-22T02:23:00.3488802Z         "impl": {
2026-06-22T02:23:00.3488888Z           "complete": false,
2026-06-22T02:23:00.3489136Z           "evidence": []
2026-06-22T02:23:00.3489212Z         },
2026-06-22T02:23:00.3489290Z         "int": {
2026-06-22T02:23:00.3489384Z           "complete": false,
2026-06-22T02:23:00.3489464Z           "evidence": []
2026-06-22T02:23:00.3489546Z         },
2026-06-22T02:23:00.3489629Z         "unit": {
2026-06-22T02:23:00.3489713Z           "complete": false,
2026-06-22T02:23:00.3489798Z           "evidence": []
2026-06-22T02:23:00.3489878Z         }
2026-06-22T02:23:00.3489960Z       }
2026-06-22T02:23:00.3490040Z     },
2026-06-22T02:23:00.3490124Z     {
2026-06-22T02:23:00.3490234Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-22T02:23:00.3494454Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-22T02:23:00.3494581Z       "requiredStages": [],
2026-06-22T02:23:00.3494658Z       "stages": {
2026-06-22T02:23:00.3494740Z         "doc": {
2026-06-22T02:23:00.3494826Z           "complete": false,
2026-06-22T02:23:00.3494905Z           "evidence": []
2026-06-22T02:23:00.3494990Z         },
2026-06-22T02:23:00.3495076Z         "impl": {
2026-06-22T02:23:00.3495152Z           "complete": false,
2026-06-22T02:23:00.3495241Z           "evidence": []
2026-06-22T02:23:00.3495321Z         },
2026-06-22T02:23:00.3495403Z         "int": {
2026-06-22T02:23:00.3495486Z           "complete": false,
2026-06-22T02:23:00.3495570Z           "evidence": []
2026-06-22T02:23:00.3495651Z         },
2026-06-22T02:23:00.3495733Z         "unit": {
2026-06-22T02:23:00.3495833Z           "complete": false,
2026-06-22T02:23:00.3495918Z           "evidence": []
2026-06-22T02:23:00.3496005Z         }
2026-06-22T02:23:00.3496086Z       }
2026-06-22T02:23:00.3496171Z     },
2026-06-22T02:23:00.3496256Z     {
2026-06-22T02:23:00.3496382Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-22T02:23:00.3510036Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-22T02:23:00.3510486Z       "requiredStages": [
2026-06-22T02:23:00.3510638Z         "doc",
2026-06-22T02:23:00.3510724Z         "impl",
2026-06-22T02:23:00.3510805Z         "unit",
2026-06-22T02:23:00.3510880Z         "int"
2026-06-22T02:23:00.3510965Z       ],
2026-06-22T02:23:00.3511051Z       "stages": {
2026-06-22T02:23:00.3511132Z         "doc": {
2026-06-22T02:23:00.3511226Z           "complete": true,
2026-06-22T02:23:00.3511311Z           "evidence": [
2026-06-22T02:23:00.3511398Z             {
2026-06-22T02:23:00.3511498Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3511588Z               "line": 468
2026-06-22T02:23:00.3511669Z             }
2026-06-22T02:23:00.3511751Z           ]
2026-06-22T02:23:00.3511822Z         },
2026-06-22T02:23:00.3511898Z         "impl": {
2026-06-22T02:23:00.3511989Z           "complete": true,
2026-06-22T02:23:00.3512070Z           "evidence": [
2026-06-22T02:23:00.3512151Z             {
2026-06-22T02:23:00.3512284Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3512366Z               "line": 348
2026-06-22T02:23:00.3512451Z             },
2026-06-22T02:23:00.3512536Z             {
2026-06-22T02:23:00.3512652Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3512737Z               "line": 1282
2026-06-22T02:23:00.3512823Z             },
2026-06-22T02:23:00.3512908Z             {
2026-06-22T02:23:00.3513024Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3513109Z               "line": 759
2026-06-22T02:23:00.3513190Z             }
2026-06-22T02:23:00.3513277Z           ]
2026-06-22T02:23:00.3513358Z         },
2026-06-22T02:23:00.3513428Z         "int": {
2026-06-22T02:23:00.3513524Z           "complete": true,
2026-06-22T02:23:00.3513606Z           "evidence": [
2026-06-22T02:23:00.3513691Z             {
2026-06-22T02:23:00.3513809Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.3513904Z               "line": 1206
2026-06-22T02:23:00.3513986Z             },
2026-06-22T02:23:00.3514062Z             {
2026-06-22T02:23:00.3514175Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.3514253Z               "line": 1307
2026-06-22T02:23:00.3514339Z             },
2026-06-22T02:23:00.3514419Z             {
2026-06-22T02:23:00.3514529Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.3514620Z               "line": 1169
2026-06-22T02:23:00.3514696Z             }
2026-06-22T02:23:00.3514772Z           ]
2026-06-22T02:23:00.3514844Z         },
2026-06-22T02:23:00.3514925Z         "unit": {
2026-06-22T02:23:00.3515006Z           "complete": true,
2026-06-22T02:23:00.3515087Z           "evidence": [
2026-06-22T02:23:00.3515168Z             {
2026-06-22T02:23:00.3515278Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3515363Z               "line": 2873
2026-06-22T02:23:00.3515439Z             }
2026-06-22T02:23:00.3515522Z           ]
2026-06-22T02:23:00.3515602Z         }
2026-06-22T02:23:00.3515687Z       }
2026-06-22T02:23:00.3515768Z     },
2026-06-22T02:23:00.3515856Z     {
2026-06-22T02:23:00.3515978Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-22T02:23:00.3516375Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-22T02:23:00.3516461Z       "requiredStages": [
2026-06-22T02:23:00.3516533Z         "impl",
2026-06-22T02:23:00.3516615Z         "unit",
2026-06-22T02:23:00.3516704Z         "int"
2026-06-22T02:23:00.3516781Z       ],
2026-06-22T02:23:00.3516863Z       "stages": {
2026-06-22T02:23:00.3516944Z         "doc": {
2026-06-22T02:23:00.3517038Z           "complete": false,
2026-06-22T02:23:00.3517120Z           "evidence": []
2026-06-22T02:23:00.3517202Z         },
2026-06-22T02:23:00.3517287Z         "impl": {
2026-06-22T02:23:00.3517372Z           "complete": true,
2026-06-22T02:23:00.3517535Z           "evidence": [
2026-06-22T02:23:00.3517606Z             {
2026-06-22T02:23:00.3517802Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3517878Z               "line": 178
2026-06-22T02:23:00.3517954Z             },
2026-06-22T02:23:00.3518040Z             {
2026-06-22T02:23:00.3518155Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3518235Z               "line": 226
2026-06-22T02:23:00.3518321Z             },
2026-06-22T02:23:00.3518408Z             {
2026-06-22T02:23:00.3518517Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.3518603Z               "line": 79
2026-06-22T02:23:00.3518679Z             },
2026-06-22T02:23:00.3518756Z             {
2026-06-22T02:23:00.3518855Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.3519011Z               "line": 52
2026-06-22T02:23:00.3519092Z             },
2026-06-22T02:23:00.3519172Z             {
2026-06-22T02:23:00.3519295Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3519376Z               "line": 263
2026-06-22T02:23:00.3519463Z             },
2026-06-22T02:23:00.3519566Z             {
2026-06-22T02:23:00.3519687Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3519768Z               "line": 27
2026-06-22T02:23:00.3519849Z             },
2026-06-22T02:23:00.3519934Z             {
2026-06-22T02:23:00.3520050Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3520125Z               "line": 79
2026-06-22T02:23:00.3520210Z             },
2026-06-22T02:23:00.3520306Z             {
2026-06-22T02:23:00.3520426Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3520502Z               "line": 102
2026-06-22T02:23:00.3520588Z             },
2026-06-22T02:23:00.3520670Z             {
2026-06-22T02:23:00.3520778Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3520864Z               "line": 116
2026-06-22T02:23:00.3520951Z             }
2026-06-22T02:23:00.3521037Z           ]
2026-06-22T02:23:00.3521130Z         },
2026-06-22T02:23:00.3521241Z         "int": {
2026-06-22T02:23:00.3521356Z           "complete": true,
2026-06-22T02:23:00.3521445Z           "evidence": [
2026-06-22T02:23:00.3521530Z             {
2026-06-22T02:23:00.3521655Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T02:23:00.3521734Z               "line": 43
2026-06-22T02:23:00.3521819Z             }
2026-06-22T02:23:00.3521900Z           ]
2026-06-22T02:23:00.3521982Z         },
2026-06-22T02:23:00.3522054Z         "unit": {
2026-06-22T02:23:00.3522143Z           "complete": true,
2026-06-22T02:23:00.3522239Z           "evidence": [
2026-06-22T02:23:00.3522315Z             {
2026-06-22T02:23:00.3522424Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3522505Z               "line": 678
2026-06-22T02:23:00.3522588Z             },
2026-06-22T02:23:00.3522678Z             {
2026-06-22T02:23:00.3522777Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3522883Z               "line": 495
2026-06-22T02:23:00.3523006Z             },
2026-06-22T02:23:00.3523096Z             {
2026-06-22T02:23:00.3523217Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3523302Z               "line": 124
2026-06-22T02:23:00.3523383Z             },
2026-06-22T02:23:00.3523455Z             {
2026-06-22T02:23:00.3523584Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3523673Z               "line": 143
2026-06-22T02:23:00.3523755Z             },
2026-06-22T02:23:00.3523837Z             {
2026-06-22T02:23:00.3523941Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3524027Z               "line": 160
2026-06-22T02:23:00.3524113Z             },
2026-06-22T02:23:00.3524195Z             {
2026-06-22T02:23:00.3524303Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3524493Z               "line": 187
2026-06-22T02:23:00.3524580Z             },
2026-06-22T02:23:00.3524665Z             {
2026-06-22T02:23:00.3524875Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:23:00.3524965Z               "line": 206
2026-06-22T02:23:00.3525046Z             },
2026-06-22T02:23:00.3525133Z             {
2026-06-22T02:23:00.3525233Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3525322Z               "line": 229
2026-06-22T02:23:00.3525404Z             }
2026-06-22T02:23:00.3525490Z           ]
2026-06-22T02:23:00.3525571Z         }
2026-06-22T02:23:00.3525661Z       }
2026-06-22T02:23:00.3525738Z     },
2026-06-22T02:23:00.3525824Z     {
2026-06-22T02:23:00.3525952Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-22T02:23:00.3526572Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-22T02:23:00.3526671Z       "requiredStages": [
2026-06-22T02:23:00.3526766Z         "impl",
2026-06-22T02:23:00.3526846Z         "unit"
2026-06-22T02:23:00.3526931Z       ],
2026-06-22T02:23:00.3527017Z       "stages": {
2026-06-22T02:23:00.3527103Z         "doc": {
2026-06-22T02:23:00.3527185Z           "complete": false,
2026-06-22T02:23:00.3527269Z           "evidence": []
2026-06-22T02:23:00.3527355Z         },
2026-06-22T02:23:00.3527442Z         "impl": {
2026-06-22T02:23:00.3527537Z           "complete": true,
2026-06-22T02:23:00.3527612Z           "evidence": [
2026-06-22T02:23:00.3527695Z             {
2026-06-22T02:23:00.3527813Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3527894Z               "line": 1223
2026-06-22T02:23:00.3527975Z             },
2026-06-22T02:23:00.3528047Z             {
2026-06-22T02:23:00.3528152Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3528242Z               "line": 1449
2026-06-22T02:23:00.3528324Z             }
2026-06-22T02:23:00.3528419Z           ]
2026-06-22T02:23:00.3528533Z         },
2026-06-22T02:23:00.3528624Z         "int": {
2026-06-22T02:23:00.3528729Z           "complete": false,
2026-06-22T02:23:00.3528814Z           "evidence": []
2026-06-22T02:23:00.3528895Z         },
2026-06-22T02:23:00.3529030Z         "unit": {
2026-06-22T02:23:00.3529119Z           "complete": true,
2026-06-22T02:23:00.3529205Z           "evidence": [
2026-06-22T02:23:00.3529293Z             {
2026-06-22T02:23:00.3529406Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:23:00.3529500Z               "line": 161
2026-06-22T02:23:00.3529581Z             }
2026-06-22T02:23:00.3529662Z           ]
2026-06-22T02:23:00.3529742Z         }
2026-06-22T02:23:00.3529821Z       }
2026-06-22T02:23:00.3529908Z     },
2026-06-22T02:23:00.3529990Z     {
2026-06-22T02:23:00.3530108Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-22T02:23:00.3531816Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-22T02:23:00.3531926Z       "requiredStages": [
2026-06-22T02:23:00.3532010Z         "impl",
2026-06-22T02:23:00.3532095Z         "unit"
2026-06-22T02:23:00.3532176Z       ],
2026-06-22T02:23:00.3532257Z       "stages": {
2026-06-22T02:23:00.3532332Z         "doc": {
2026-06-22T02:23:00.3532422Z           "complete": false,
2026-06-22T02:23:00.3532508Z           "evidence": []
2026-06-22T02:23:00.3532751Z         },
2026-06-22T02:23:00.3532828Z         "impl": {
2026-06-22T02:23:00.3533027Z           "complete": true,
2026-06-22T02:23:00.3533109Z           "evidence": [
2026-06-22T02:23:00.3533186Z             {
2026-06-22T02:23:00.3533304Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.3533395Z               "line": 257
2026-06-22T02:23:00.3533472Z             }
2026-06-22T02:23:00.3533552Z           ]
2026-06-22T02:23:00.3533638Z         },
2026-06-22T02:23:00.3533719Z         "int": {
2026-06-22T02:23:00.3533811Z           "complete": false,
2026-06-22T02:23:00.3533890Z           "evidence": []
2026-06-22T02:23:00.3533981Z         },
2026-06-22T02:23:00.3534068Z         "unit": {
2026-06-22T02:23:00.3534154Z           "complete": true,
2026-06-22T02:23:00.3534229Z           "evidence": [
2026-06-22T02:23:00.3534310Z             {
2026-06-22T02:23:00.3534426Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.3534511Z               "line": 360
2026-06-22T02:23:00.3534596Z             }
2026-06-22T02:23:00.3534683Z           ]
2026-06-22T02:23:00.3534760Z         }
2026-06-22T02:23:00.3534835Z       }
2026-06-22T02:23:00.3534910Z     },
2026-06-22T02:23:00.3534995Z     {
2026-06-22T02:23:00.3535101Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-22T02:23:00.3536884Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-22T02:23:00.3536991Z       "requiredStages": [
2026-06-22T02:23:00.3537071Z         "impl",
2026-06-22T02:23:00.3537151Z         "unit"
2026-06-22T02:23:00.3537240Z       ],
2026-06-22T02:23:00.3537322Z       "stages": {
2026-06-22T02:23:00.3537406Z         "doc": {
2026-06-22T02:23:00.3537487Z           "complete": false,
2026-06-22T02:23:00.3537577Z           "evidence": []
2026-06-22T02:23:00.3537653Z         },
2026-06-22T02:23:00.3537745Z         "impl": {
2026-06-22T02:23:00.3537834Z           "complete": true,
2026-06-22T02:23:00.3537920Z           "evidence": [
2026-06-22T02:23:00.3538002Z             {
2026-06-22T02:23:00.3538120Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3538211Z               "line": 1018
2026-06-22T02:23:00.3538293Z             },
2026-06-22T02:23:00.3538374Z             {
2026-06-22T02:23:00.3538492Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3538575Z               "line": 283
2026-06-22T02:23:00.3538655Z             },
2026-06-22T02:23:00.3538736Z             {
2026-06-22T02:23:00.3538845Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3539003Z               "line": 316
2026-06-22T02:23:00.3539079Z             },
2026-06-22T02:23:00.3539155Z             {
2026-06-22T02:23:00.3539261Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:23:00.3539346Z               "line": 26
2026-06-22T02:23:00.3539427Z             }
2026-06-22T02:23:00.3539509Z           ]
2026-06-22T02:23:00.3539590Z         },
2026-06-22T02:23:00.3539670Z         "int": {
2026-06-22T02:23:00.3539756Z           "complete": false,
2026-06-22T02:23:00.3539838Z           "evidence": []
2026-06-22T02:23:00.3539919Z         },
2026-06-22T02:23:00.3539999Z         "unit": {
2026-06-22T02:23:00.3540093Z           "complete": true,
2026-06-22T02:23:00.3540170Z           "evidence": [
2026-06-22T02:23:00.3540255Z             {
2026-06-22T02:23:00.3540363Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:23:00.3540555Z               "line": 271
2026-06-22T02:23:00.3540640Z             },
2026-06-22T02:23:00.3540720Z             {
2026-06-22T02:23:00.3540912Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:23:00.3541002Z               "line": 348
2026-06-22T02:23:00.3541073Z             }
2026-06-22T02:23:00.3541160Z           ]
2026-06-22T02:23:00.3541241Z         }
2026-06-22T02:23:00.3541326Z       }
2026-06-22T02:23:00.3541407Z     },
2026-06-22T02:23:00.3541489Z     {
2026-06-22T02:23:00.3541593Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-22T02:23:00.3541766Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-22T02:23:00.3541866Z       "requiredStages": [
2026-06-22T02:23:00.3541951Z         "impl",
2026-06-22T02:23:00.3542032Z         "unit"
2026-06-22T02:23:00.3542114Z       ],
2026-06-22T02:23:00.3542199Z       "stages": {
2026-06-22T02:23:00.3542280Z         "doc": {
2026-06-22T02:23:00.3542366Z           "complete": false,
2026-06-22T02:23:00.3542462Z           "evidence": []
2026-06-22T02:23:00.3542538Z         },
2026-06-22T02:23:00.3542627Z         "impl": {
2026-06-22T02:23:00.3542722Z           "complete": true,
2026-06-22T02:23:00.3542813Z           "evidence": [
2026-06-22T02:23:00.3542897Z             {
2026-06-22T02:23:00.3543015Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3543097Z               "line": 40
2026-06-22T02:23:00.3543179Z             },
2026-06-22T02:23:00.3543258Z             {
2026-06-22T02:23:00.3543364Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3543455Z               "line": 103
2026-06-22T02:23:00.3543531Z             },
2026-06-22T02:23:00.3543611Z             {
2026-06-22T02:23:00.3543713Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3543802Z               "line": 218
2026-06-22T02:23:00.3543879Z             },
2026-06-22T02:23:00.3543964Z             {
2026-06-22T02:23:00.3544070Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3544160Z               "line": 323
2026-06-22T02:23:00.3544241Z             }
2026-06-22T02:23:00.3544332Z           ]
2026-06-22T02:23:00.3544413Z         },
2026-06-22T02:23:00.3544490Z         "int": {
2026-06-22T02:23:00.3544585Z           "complete": false,
2026-06-22T02:23:00.3544676Z           "evidence": []
2026-06-22T02:23:00.3544761Z         },
2026-06-22T02:23:00.3544842Z         "unit": {
2026-06-22T02:23:00.3544928Z           "complete": true,
2026-06-22T02:23:00.3545005Z           "evidence": [
2026-06-22T02:23:00.3545090Z             {
2026-06-22T02:23:00.3545190Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3545287Z               "line": 361
2026-06-22T02:23:00.3545377Z             },
2026-06-22T02:23:00.3545456Z             {
2026-06-22T02:23:00.3545560Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3545647Z               "line": 433
2026-06-22T02:23:00.3545734Z             },
2026-06-22T02:23:00.3545818Z             {
2026-06-22T02:23:00.3545923Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3546024Z               "line": 496
2026-06-22T02:23:00.3546090Z             },
2026-06-22T02:23:00.3546176Z             {
2026-06-22T02:23:00.3546282Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3546372Z               "line": 517
2026-06-22T02:23:00.3546447Z             }
2026-06-22T02:23:00.3546534Z           ]
2026-06-22T02:23:00.3546621Z         }
2026-06-22T02:23:00.3546700Z       }
2026-06-22T02:23:00.3546786Z     },
2026-06-22T02:23:00.3546868Z     {
2026-06-22T02:23:00.3546977Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-22T02:23:00.3549300Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-22T02:23:00.3549620Z       "requiredStages": [
2026-06-22T02:23:00.3549701Z         "impl",
2026-06-22T02:23:00.3549779Z         "unit"
2026-06-22T02:23:00.3549868Z       ],
2026-06-22T02:23:00.3549954Z       "stages": {
2026-06-22T02:23:00.3550035Z         "doc": {
2026-06-22T02:23:00.3550131Z           "complete": false,
2026-06-22T02:23:00.3550211Z           "evidence": []
2026-06-22T02:23:00.3550288Z         },
2026-06-22T02:23:00.3550375Z         "impl": {
2026-06-22T02:23:00.3550470Z           "complete": true,
2026-06-22T02:23:00.3550573Z           "evidence": [
2026-06-22T02:23:00.3550648Z             {
2026-06-22T02:23:00.3550787Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.3550871Z               "line": 402
2026-06-22T02:23:00.3550961Z             },
2026-06-22T02:23:00.3551038Z             {
2026-06-22T02:23:00.3551157Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.3551247Z               "line": 446
2026-06-22T02:23:00.3551328Z             }
2026-06-22T02:23:00.3551420Z           ]
2026-06-22T02:23:00.3551491Z         },
2026-06-22T02:23:00.3551572Z         "int": {
2026-06-22T02:23:00.3551662Z           "complete": false,
2026-06-22T02:23:00.3551744Z           "evidence": []
2026-06-22T02:23:00.3551830Z         },
2026-06-22T02:23:00.3551910Z         "unit": {
2026-06-22T02:23:00.3551996Z           "complete": true,
2026-06-22T02:23:00.3552087Z           "evidence": [
2026-06-22T02:23:00.3552173Z             {
2026-06-22T02:23:00.3552292Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.3552378Z               "line": 910
2026-06-22T02:23:00.3552473Z             }
2026-06-22T02:23:00.3552558Z           ]
2026-06-22T02:23:00.3552641Z         }
2026-06-22T02:23:00.3552722Z       }
2026-06-22T02:23:00.3552806Z     },
2026-06-22T02:23:00.3552887Z     {
2026-06-22T02:23:00.3552999Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-22T02:23:00.3553121Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-22T02:23:00.3553201Z       "requiredStages": [
2026-06-22T02:23:00.3553287Z         "impl",
2026-06-22T02:23:00.3553359Z         "unit"
2026-06-22T02:23:00.3553443Z       ],
2026-06-22T02:23:00.3553523Z       "stages": {
2026-06-22T02:23:00.3553609Z         "doc": {
2026-06-22T02:23:00.3553720Z           "complete": false,
2026-06-22T02:23:00.3553800Z           "evidence": []
2026-06-22T02:23:00.3553885Z         },
2026-06-22T02:23:00.3553963Z         "impl": {
2026-06-22T02:23:00.3554058Z           "complete": true,
2026-06-22T02:23:00.3554143Z           "evidence": [
2026-06-22T02:23:00.3554229Z             {
2026-06-22T02:23:00.3554349Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3554434Z               "line": 116
2026-06-22T02:23:00.3554525Z             },
2026-06-22T02:23:00.3554597Z             {
2026-06-22T02:23:00.3554710Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3554791Z               "line": 211
2026-06-22T02:23:00.3554873Z             }
2026-06-22T02:23:00.3554955Z           ]
2026-06-22T02:23:00.3555035Z         },
2026-06-22T02:23:00.3555115Z         "int": {
2026-06-22T02:23:00.3555203Z           "complete": false,
2026-06-22T02:23:00.3555298Z           "evidence": []
2026-06-22T02:23:00.3555368Z         },
2026-06-22T02:23:00.3555450Z         "unit": {
2026-06-22T02:23:00.3555537Z           "complete": true,
2026-06-22T02:23:00.3555622Z           "evidence": [
2026-06-22T02:23:00.3555712Z             {
2026-06-22T02:23:00.3555899Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3555993Z               "line": 388
2026-06-22T02:23:00.3556145Z             },
2026-06-22T02:23:00.3556236Z             {
2026-06-22T02:23:00.3556350Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3556435Z               "line": 469
2026-06-22T02:23:00.3556522Z             }
2026-06-22T02:23:00.3556598Z           ]
2026-06-22T02:23:00.3556688Z         }
2026-06-22T02:23:00.3556764Z       }
2026-06-22T02:23:00.3556842Z     },
2026-06-22T02:23:00.3556932Z     {
2026-06-22T02:23:00.3557046Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-22T02:23:00.3558106Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-22T02:23:00.3558205Z       "requiredStages": [
2026-06-22T02:23:00.3558295Z         "impl",
2026-06-22T02:23:00.3558395Z         "unit"
2026-06-22T02:23:00.3558476Z       ],
2026-06-22T02:23:00.3558554Z       "stages": {
2026-06-22T02:23:00.3558640Z         "doc": {
2026-06-22T02:23:00.3558735Z           "complete": true,
2026-06-22T02:23:00.3558817Z           "evidence": [
2026-06-22T02:23:00.3558902Z             {
2026-06-22T02:23:00.3559084Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3559165Z               "line": 206
2026-06-22T02:23:00.3559250Z             }
2026-06-22T02:23:00.3562027Z           ]
2026-06-22T02:23:00.3562127Z         },
2026-06-22T02:23:00.3562218Z         "impl": {
2026-06-22T02:23:00.3562314Z           "complete": true,
2026-06-22T02:23:00.3562404Z           "evidence": [
2026-06-22T02:23:00.3562489Z             {
2026-06-22T02:23:00.3562619Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3562718Z               "line": 691
2026-06-22T02:23:00.3562799Z             },
2026-06-22T02:23:00.3562881Z             {
2026-06-22T02:23:00.3563014Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3563105Z               "line": 791
2026-06-22T02:23:00.3563191Z             },
2026-06-22T02:23:00.3563272Z             {
2026-06-22T02:23:00.3563381Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3563462Z               "line": 1120
2026-06-22T02:23:00.3563545Z             },
2026-06-22T02:23:00.3563630Z             {
2026-06-22T02:23:00.3563752Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.3563833Z               "line": 184
2026-06-22T02:23:00.3563914Z             }
2026-06-22T02:23:00.3563993Z           ]
2026-06-22T02:23:00.3564073Z         },
2026-06-22T02:23:00.3564155Z         "int": {
2026-06-22T02:23:00.3564232Z           "complete": false,
2026-06-22T02:23:00.3564322Z           "evidence": []
2026-06-22T02:23:00.3564407Z         },
2026-06-22T02:23:00.3564494Z         "unit": {
2026-06-22T02:23:00.3564580Z           "complete": true,
2026-06-22T02:23:00.3564670Z           "evidence": [
2026-06-22T02:23:00.3564751Z             {
2026-06-22T02:23:00.3564857Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3564947Z               "line": 1169
2026-06-22T02:23:00.3565018Z             },
2026-06-22T02:23:00.3565094Z             {
2026-06-22T02:23:00.3565214Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:23:00.3565300Z               "line": 44
2026-06-22T02:23:00.3565380Z             },
2026-06-22T02:23:00.3565458Z             {
2026-06-22T02:23:00.3565581Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T02:23:00.3565666Z               "line": 52
2026-06-22T02:23:00.3565748Z             },
2026-06-22T02:23:00.3565830Z             {
2026-06-22T02:23:00.3565938Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:23:00.3566191Z               "line": 57
2026-06-22T02:23:00.3566262Z             },
2026-06-22T02:23:00.3566339Z             {
2026-06-22T02:23:00.3566553Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T02:23:00.3566647Z               "line": 54
2026-06-22T02:23:00.3566724Z             }
2026-06-22T02:23:00.3566806Z           ]
2026-06-22T02:23:00.3566887Z         }
2026-06-22T02:23:00.3566967Z       }
2026-06-22T02:23:00.3567054Z     },
2026-06-22T02:23:00.3567130Z     {
2026-06-22T02:23:00.3567248Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-22T02:23:00.3567459Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-22T02:23:00.3567549Z       "requiredStages": [
2026-06-22T02:23:00.3567635Z         "impl",
2026-06-22T02:23:00.3567712Z         "unit"
2026-06-22T02:23:00.3567797Z       ],
2026-06-22T02:23:00.3567878Z       "stages": {
2026-06-22T02:23:00.3567959Z         "doc": {
2026-06-22T02:23:00.3568046Z           "complete": false,
2026-06-22T02:23:00.3568149Z           "evidence": []
2026-06-22T02:23:00.3568226Z         },
2026-06-22T02:23:00.3568313Z         "impl": {
2026-06-22T02:23:00.3568432Z           "complete": true,
2026-06-22T02:23:00.3568507Z           "evidence": [
2026-06-22T02:23:00.3568612Z             {
2026-06-22T02:23:00.3568732Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3568812Z               "line": 26
2026-06-22T02:23:00.3568897Z             },
2026-06-22T02:23:00.3569059Z             {
2026-06-22T02:23:00.3569176Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3569267Z               "line": 135
2026-06-22T02:23:00.3569349Z             },
2026-06-22T02:23:00.3569425Z             {
2026-06-22T02:23:00.3569552Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:23:00.3569644Z               "line": 26
2026-06-22T02:23:00.3569725Z             },
2026-06-22T02:23:00.3569810Z             {
2026-06-22T02:23:00.3569925Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:23:00.3570020Z               "line": 237
2026-06-22T02:23:00.3570106Z             }
2026-06-22T02:23:00.3570187Z           ]
2026-06-22T02:23:00.3570269Z         },
2026-06-22T02:23:00.3570335Z         "int": {
2026-06-22T02:23:00.3570426Z           "complete": false,
2026-06-22T02:23:00.3570511Z           "evidence": []
2026-06-22T02:23:00.3570593Z         },
2026-06-22T02:23:00.3570678Z         "unit": {
2026-06-22T02:23:00.3570769Z           "complete": true,
2026-06-22T02:23:00.3570865Z           "evidence": [
2026-06-22T02:23:00.3570942Z             {
2026-06-22T02:23:00.3571060Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3571146Z               "line": 161
2026-06-22T02:23:00.3571228Z             },
2026-06-22T02:23:00.3571308Z             {
2026-06-22T02:23:00.3571417Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3571500Z               "line": 170
2026-06-22T02:23:00.3571576Z             },
2026-06-22T02:23:00.3571660Z             {
2026-06-22T02:23:00.3571755Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3571845Z               "line": 179
2026-06-22T02:23:00.3571926Z             },
2026-06-22T02:23:00.3572005Z             {
2026-06-22T02:23:00.3572114Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3572201Z               "line": 190
2026-06-22T02:23:00.3572283Z             },
2026-06-22T02:23:00.3572353Z             {
2026-06-22T02:23:00.3572468Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3572549Z               "line": 199
2026-06-22T02:23:00.3572635Z             },
2026-06-22T02:23:00.3572716Z             {
2026-06-22T02:23:00.3572827Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3572907Z               "line": 216
2026-06-22T02:23:00.3572987Z             },
2026-06-22T02:23:00.3573068Z             {
2026-06-22T02:23:00.3573165Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:23:00.3573345Z               "line": 242
2026-06-22T02:23:00.3573432Z             },
2026-06-22T02:23:00.3573593Z             {
2026-06-22T02:23:00.3573693Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.3573780Z               "line": 295
2026-06-22T02:23:00.3573856Z             },
2026-06-22T02:23:00.3573941Z             {
2026-06-22T02:23:00.3574047Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3574124Z               "line": 244
2026-06-22T02:23:00.3574199Z             },
2026-06-22T02:23:00.3574274Z             {
2026-06-22T02:23:00.3574383Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:23:00.3574464Z               "line": 265
2026-06-22T02:23:00.3574549Z             },
2026-06-22T02:23:00.3574620Z             {
2026-06-22T02:23:00.3574744Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:23:00.3574830Z               "line": 293
2026-06-22T02:23:00.3574916Z             },
2026-06-22T02:23:00.3574996Z             {
2026-06-22T02:23:00.3575121Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:23:00.3575221Z               "line": 317
2026-06-22T02:23:00.3575296Z             },
2026-06-22T02:23:00.3575379Z             {
2026-06-22T02:23:00.3575483Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:23:00.3575568Z               "line": 327
2026-06-22T02:23:00.3575640Z             },
2026-06-22T02:23:00.3575722Z             {
2026-06-22T02:23:00.3575840Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.3575926Z               "line": 540
2026-06-22T02:23:00.3576013Z             }
2026-06-22T02:23:00.3576093Z           ]
2026-06-22T02:23:00.3576174Z         }
2026-06-22T02:23:00.3576255Z       }
2026-06-22T02:23:00.3576333Z     },
2026-06-22T02:23:00.3576413Z     {
2026-06-22T02:23:00.3576546Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-22T02:23:00.3581319Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-22T02:23:00.3581454Z       "requiredStages": [],
2026-06-22T02:23:00.3581535Z       "stages": {
2026-06-22T02:23:00.3581615Z         "doc": {
2026-06-22T02:23:00.3581701Z           "complete": false,
2026-06-22T02:23:00.3581783Z           "evidence": []
2026-06-22T02:23:00.3581873Z         },
2026-06-22T02:23:00.3581954Z         "impl": {
2026-06-22T02:23:00.3582045Z           "complete": false,
2026-06-22T02:23:00.3582234Z           "evidence": []
2026-06-22T02:23:00.3582311Z         },
2026-06-22T02:23:00.3582392Z         "int": {
2026-06-22T02:23:00.3582570Z           "complete": false,
2026-06-22T02:23:00.3582651Z           "evidence": []
2026-06-22T02:23:00.3582732Z         },
2026-06-22T02:23:00.3582814Z         "unit": {
2026-06-22T02:23:00.3582894Z           "complete": false,
2026-06-22T02:23:00.3582980Z           "evidence": []
2026-06-22T02:23:00.3583062Z         }
2026-06-22T02:23:00.3583138Z       }
2026-06-22T02:23:00.3583219Z     },
2026-06-22T02:23:00.3583295Z     {
2026-06-22T02:23:00.3583411Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-22T02:23:00.3584919Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-22T02:23:00.3585025Z       "requiredStages": [
2026-06-22T02:23:00.3585109Z         "impl",
2026-06-22T02:23:00.3585194Z         "unit",
2026-06-22T02:23:00.3585266Z         "int"
2026-06-22T02:23:00.3585342Z       ],
2026-06-22T02:23:00.3585428Z       "stages": {
2026-06-22T02:23:00.3585509Z         "doc": {
2026-06-22T02:23:00.3585595Z           "complete": false,
2026-06-22T02:23:00.3585681Z           "evidence": []
2026-06-22T02:23:00.3585757Z         },
2026-06-22T02:23:00.3585838Z         "impl": {
2026-06-22T02:23:00.3585919Z           "complete": true,
2026-06-22T02:23:00.3586005Z           "evidence": [
2026-06-22T02:23:00.3586086Z             {
2026-06-22T02:23:00.3586210Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3586292Z               "line": 538
2026-06-22T02:23:00.3586377Z             },
2026-06-22T02:23:00.3586457Z             {
2026-06-22T02:23:00.3586573Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3586663Z               "line": 641
2026-06-22T02:23:00.3586749Z             },
2026-06-22T02:23:00.3586825Z             {
2026-06-22T02:23:00.3586968Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:23:00.3587058Z               "line": 21
2026-06-22T02:23:00.3587130Z             }
2026-06-22T02:23:00.3587208Z           ]
2026-06-22T02:23:00.3587288Z         },
2026-06-22T02:23:00.3587368Z         "int": {
2026-06-22T02:23:00.3587459Z           "complete": true,
2026-06-22T02:23:00.3587537Z           "evidence": [
2026-06-22T02:23:00.3587622Z             {
2026-06-22T02:23:00.3587744Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:23:00.3587834Z               "line": 236
2026-06-22T02:23:00.3587917Z             },
2026-06-22T02:23:00.3587993Z             {
2026-06-22T02:23:00.3588126Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:23:00.3588217Z               "line": 396
2026-06-22T02:23:00.3588293Z             },
2026-06-22T02:23:00.3588374Z             {
2026-06-22T02:23:00.3588517Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.3588598Z               "line": 1534
2026-06-22T02:23:00.3588683Z             },
2026-06-22T02:23:00.3588760Z             {
2026-06-22T02:23:00.3588889Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.3589065Z               "line": 1712
2026-06-22T02:23:00.3589138Z             }
2026-06-22T02:23:00.3589214Z           ]
2026-06-22T02:23:00.3589299Z         },
2026-06-22T02:23:00.3589379Z         "unit": {
2026-06-22T02:23:00.3589462Z           "complete": true,
2026-06-22T02:23:00.3589552Z           "evidence": [
2026-06-22T02:23:00.3589622Z             {
2026-06-22T02:23:00.3589742Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3589932Z               "line": 887
2026-06-22T02:23:00.3590008Z             }
2026-06-22T02:23:00.3590193Z           ]
2026-06-22T02:23:00.3590273Z         }
2026-06-22T02:23:00.3590349Z       }
2026-06-22T02:23:00.3590426Z     },
2026-06-22T02:23:00.3590507Z     {
2026-06-22T02:23:00.3590625Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-22T02:23:00.3590769Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-22T02:23:00.3590855Z       "requiredStages": [
2026-06-22T02:23:00.3590930Z         "impl",
2026-06-22T02:23:00.3591011Z         "unit"
2026-06-22T02:23:00.3591089Z       ],
2026-06-22T02:23:00.3591174Z       "stages": {
2026-06-22T02:23:00.3591259Z         "doc": {
2026-06-22T02:23:00.3591336Z           "complete": false,
2026-06-22T02:23:00.3591423Z           "evidence": []
2026-06-22T02:23:00.3591498Z         },
2026-06-22T02:23:00.3591579Z         "impl": {
2026-06-22T02:23:00.3591670Z           "complete": true,
2026-06-22T02:23:00.3591761Z           "evidence": [
2026-06-22T02:23:00.3591847Z             {
2026-06-22T02:23:00.3591956Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:23:00.3592043Z               "line": 25
2026-06-22T02:23:00.3592118Z             },
2026-06-22T02:23:00.3592200Z             {
2026-06-22T02:23:00.3592315Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.3592396Z               "line": 26
2026-06-22T02:23:00.3592480Z             },
2026-06-22T02:23:00.3592557Z             {
2026-06-22T02:23:00.3592653Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.3592744Z               "line": 159
2026-06-22T02:23:00.3592818Z             }
2026-06-22T02:23:00.3592904Z           ]
2026-06-22T02:23:00.3592980Z         },
2026-06-22T02:23:00.3593065Z         "int": {
2026-06-22T02:23:00.3593149Z           "complete": false,
2026-06-22T02:23:00.3593239Z           "evidence": []
2026-06-22T02:23:00.3593321Z         },
2026-06-22T02:23:00.3593408Z         "unit": {
2026-06-22T02:23:00.3593492Z           "complete": true,
2026-06-22T02:23:00.3593578Z           "evidence": [
2026-06-22T02:23:00.3593665Z             {
2026-06-22T02:23:00.3593774Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:23:00.3593864Z               "line": 188
2026-06-22T02:23:00.3593937Z             },
2026-06-22T02:23:00.3594004Z             {
2026-06-22T02:23:00.3594112Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:23:00.3594194Z               "line": 240
2026-06-22T02:23:00.3594276Z             },
2026-06-22T02:23:00.3594356Z             {
2026-06-22T02:23:00.3594465Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.3594552Z               "line": 186
2026-06-22T02:23:00.3594624Z             }
2026-06-22T02:23:00.3594704Z           ]
2026-06-22T02:23:00.3594785Z         }
2026-06-22T02:23:00.3594862Z       }
2026-06-22T02:23:00.3594939Z     },
2026-06-22T02:23:00.3595023Z     {
2026-06-22T02:23:00.3595138Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-22T02:23:00.3595291Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-22T02:23:00.3595399Z       "requiredStages": [
2026-06-22T02:23:00.3595479Z         "impl",
2026-06-22T02:23:00.3595561Z         "unit"
2026-06-22T02:23:00.3595641Z       ],
2026-06-22T02:23:00.3595726Z       "stages": {
2026-06-22T02:23:00.3595811Z         "doc": {
2026-06-22T02:23:00.3595898Z           "complete": false,
2026-06-22T02:23:00.3595993Z           "evidence": []
2026-06-22T02:23:00.3596074Z         },
2026-06-22T02:23:00.3596160Z         "impl": {
2026-06-22T02:23:00.3596246Z           "complete": true,
2026-06-22T02:23:00.3596336Z           "evidence": [
2026-06-22T02:23:00.3596417Z             {
2026-06-22T02:23:00.3596533Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3596618Z               "line": 48
2026-06-22T02:23:00.3596698Z             },
2026-06-22T02:23:00.3596780Z             {
2026-06-22T02:23:00.3596970Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3597056Z               "line": 55
2026-06-22T02:23:00.3597204Z             },
2026-06-22T02:23:00.3597285Z             {
2026-06-22T02:23:00.3597399Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3597482Z               "line": 74
2026-06-22T02:23:00.3597561Z             },
2026-06-22T02:23:00.3597638Z             {
2026-06-22T02:23:00.3597739Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3597829Z               "line": 91
2026-06-22T02:23:00.3597909Z             }
2026-06-22T02:23:00.3597981Z           ]
2026-06-22T02:23:00.3598063Z         },
2026-06-22T02:23:00.3598154Z         "int": {
2026-06-22T02:23:00.3598242Z           "complete": false,
2026-06-22T02:23:00.3598332Z           "evidence": []
2026-06-22T02:23:00.3598419Z         },
2026-06-22T02:23:00.3598496Z         "unit": {
2026-06-22T02:23:00.3598586Z           "complete": true,
2026-06-22T02:23:00.3598676Z           "evidence": [
2026-06-22T02:23:00.3598763Z             {
2026-06-22T02:23:00.3598868Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3599054Z               "line": 149
2026-06-22T02:23:00.3599134Z             },
2026-06-22T02:23:00.3599215Z             {
2026-06-22T02:23:00.3599320Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3599402Z               "line": 166
2026-06-22T02:23:00.3599483Z             },
2026-06-22T02:23:00.3599563Z             {
2026-06-22T02:23:00.3599668Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3599759Z               "line": 176
2026-06-22T02:23:00.3599840Z             },
2026-06-22T02:23:00.3599916Z             {
2026-06-22T02:23:00.3600027Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3600112Z               "line": 194
2026-06-22T02:23:00.3600197Z             },
2026-06-22T02:23:00.3600274Z             {
2026-06-22T02:23:00.3600384Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3600474Z               "line": 207
2026-06-22T02:23:00.3600559Z             }
2026-06-22T02:23:00.3600644Z           ]
2026-06-22T02:23:00.3600730Z         }
2026-06-22T02:23:00.3600800Z       }
2026-06-22T02:23:00.3600890Z     },
2026-06-22T02:23:00.3600971Z     {
2026-06-22T02:23:00.3601087Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-22T02:23:00.3601262Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-22T02:23:00.3601344Z       "requiredStages": [
2026-06-22T02:23:00.3601429Z         "impl",
2026-06-22T02:23:00.3601514Z         "unit"
2026-06-22T02:23:00.3601596Z       ],
2026-06-22T02:23:00.3601683Z       "stages": {
2026-06-22T02:23:00.3601763Z         "doc": {
2026-06-22T02:23:00.3601843Z           "complete": false,
2026-06-22T02:23:00.3601931Z           "evidence": []
2026-06-22T02:23:00.3602011Z         },
2026-06-22T02:23:00.3602097Z         "impl": {
2026-06-22T02:23:00.3602187Z           "complete": true,
2026-06-22T02:23:00.3602288Z           "evidence": [
2026-06-22T02:23:00.3602364Z             {
2026-06-22T02:23:00.3602492Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3602579Z               "line": 466
2026-06-22T02:23:00.3602664Z             },
2026-06-22T02:23:00.3602745Z             {
2026-06-22T02:23:00.3602855Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3602946Z               "line": 26
2026-06-22T02:23:00.3603026Z             }
2026-06-22T02:23:00.3603112Z           ]
2026-06-22T02:23:00.3603185Z         },
2026-06-22T02:23:00.3603271Z         "int": {
2026-06-22T02:23:00.3603355Z           "complete": false,
2026-06-22T02:23:00.3603440Z           "evidence": []
2026-06-22T02:23:00.3603516Z         },
2026-06-22T02:23:00.3603597Z         "unit": {
2026-06-22T02:23:00.3603691Z           "complete": true,
2026-06-22T02:23:00.3603776Z           "evidence": [
2026-06-22T02:23:00.3603862Z             {
2026-06-22T02:23:00.3604067Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3604158Z               "line": 150
2026-06-22T02:23:00.3604321Z             },
2026-06-22T02:23:00.3604400Z             {
2026-06-22T02:23:00.3604516Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3604592Z               "line": 208
2026-06-22T02:23:00.3604682Z             }
2026-06-22T02:23:00.3604759Z           ]
2026-06-22T02:23:00.3604840Z         }
2026-06-22T02:23:00.3604925Z       }
2026-06-22T02:23:00.3605006Z     },
2026-06-22T02:23:00.3605087Z     {
2026-06-22T02:23:00.3605212Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-22T02:23:00.3614218Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T02:23:00.3614374Z       "requiredStages": [
2026-06-22T02:23:00.3614461Z         "impl",
2026-06-22T02:23:00.3614552Z         "unit",
2026-06-22T02:23:00.3614627Z         "int"
2026-06-22T02:23:00.3614718Z       ],
2026-06-22T02:23:00.3614795Z       "stages": {
2026-06-22T02:23:00.3614984Z         "doc": {
2026-06-22T02:23:00.3615076Z           "complete": false,
2026-06-22T02:23:00.3615242Z           "evidence": []
2026-06-22T02:23:00.3615328Z         },
2026-06-22T02:23:00.3615415Z         "impl": {
2026-06-22T02:23:00.3615509Z           "complete": true,
2026-06-22T02:23:00.3615600Z           "evidence": [
2026-06-22T02:23:00.3615682Z             {
2026-06-22T02:23:00.3615805Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3615886Z               "line": 99
2026-06-22T02:23:00.3615972Z             },
2026-06-22T02:23:00.3616044Z             {
2026-06-22T02:23:00.3616157Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3616244Z               "line": 201
2026-06-22T02:23:00.3616326Z             }
2026-06-22T02:23:00.3616402Z           ]
2026-06-22T02:23:00.3616482Z         },
2026-06-22T02:23:00.3616567Z         "int": {
2026-06-22T02:23:00.3616653Z           "complete": true,
2026-06-22T02:23:00.3616743Z           "evidence": [
2026-06-22T02:23:00.3616836Z             {
2026-06-22T02:23:00.3616984Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.3617076Z               "line": 770
2026-06-22T02:23:00.3617156Z             }
2026-06-22T02:23:00.3617237Z           ]
2026-06-22T02:23:00.3617319Z         },
2026-06-22T02:23:00.3617409Z         "unit": {
2026-06-22T02:23:00.3617523Z           "complete": true,
2026-06-22T02:23:00.3617609Z           "evidence": [
2026-06-22T02:23:00.3617690Z             {
2026-06-22T02:23:00.3617799Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3617885Z               "line": 517
2026-06-22T02:23:00.3617967Z             },
2026-06-22T02:23:00.3618047Z             {
2026-06-22T02:23:00.3618162Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3618244Z               "line": 576
2026-06-22T02:23:00.3618330Z             }
2026-06-22T02:23:00.3618411Z           ]
2026-06-22T02:23:00.3618496Z         }
2026-06-22T02:23:00.3618578Z       }
2026-06-22T02:23:00.3618663Z     },
2026-06-22T02:23:00.3618744Z     {
2026-06-22T02:23:00.3618874Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-22T02:23:00.3620198Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-22T02:23:00.3620288Z       "requiredStages": [
2026-06-22T02:23:00.3620363Z         "doc",
2026-06-22T02:23:00.3620450Z         "impl",
2026-06-22T02:23:00.3620532Z         "unit"
2026-06-22T02:23:00.3620612Z       ],
2026-06-22T02:23:00.3620688Z       "stages": {
2026-06-22T02:23:00.3620769Z         "doc": {
2026-06-22T02:23:00.3620847Z           "complete": true,
2026-06-22T02:23:00.3620946Z           "evidence": [
2026-06-22T02:23:00.3621031Z             {
2026-06-22T02:23:00.3621142Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3621237Z               "line": 214
2026-06-22T02:23:00.3621313Z             }
2026-06-22T02:23:00.3621394Z           ]
2026-06-22T02:23:00.3621467Z         },
2026-06-22T02:23:00.3621556Z         "impl": {
2026-06-22T02:23:00.3621641Z           "complete": true,
2026-06-22T02:23:00.3621731Z           "evidence": [
2026-06-22T02:23:00.3621813Z             {
2026-06-22T02:23:00.3621920Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3622005Z               "line": 56
2026-06-22T02:23:00.3622077Z             },
2026-06-22T02:23:00.3622169Z             {
2026-06-22T02:23:00.3622278Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3622363Z               "line": 580
2026-06-22T02:23:00.3622445Z             },
2026-06-22T02:23:00.3622526Z             {
2026-06-22T02:23:00.3622746Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3622841Z               "line": 36
2026-06-22T02:23:00.3623022Z             },
2026-06-22T02:23:00.3623098Z             {
2026-06-22T02:23:00.3623207Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3623293Z               "line": 59
2026-06-22T02:23:00.3623375Z             },
2026-06-22T02:23:00.3623469Z             {
2026-06-22T02:23:00.3623584Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3623665Z               "line": 83
2026-06-22T02:23:00.3623752Z             },
2026-06-22T02:23:00.3623832Z             {
2026-06-22T02:23:00.3623946Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3624029Z               "line": 140
2026-06-22T02:23:00.3624109Z             },
2026-06-22T02:23:00.3624199Z             {
2026-06-22T02:23:00.3624305Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3624400Z               "line": 159
2026-06-22T02:23:00.3624480Z             },
2026-06-22T02:23:00.3624565Z             {
2026-06-22T02:23:00.3624694Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3624783Z               "line": 384
2026-06-22T02:23:00.3624863Z             },
2026-06-22T02:23:00.3624939Z             {
2026-06-22T02:23:00.3625064Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3625145Z               "line": 535
2026-06-22T02:23:00.3625220Z             },
2026-06-22T02:23:00.3625303Z             {
2026-06-22T02:23:00.3625417Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3625497Z               "line": 581
2026-06-22T02:23:00.3625578Z             },
2026-06-22T02:23:00.3625665Z             {
2026-06-22T02:23:00.3625765Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3625859Z               "line": 300
2026-06-22T02:23:00.3625937Z             },
2026-06-22T02:23:00.3626032Z             {
2026-06-22T02:23:00.3626137Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:23:00.3626222Z               "line": 42
2026-06-22T02:23:00.3626318Z             }
2026-06-22T02:23:00.3626398Z           ]
2026-06-22T02:23:00.3626484Z         },
2026-06-22T02:23:00.3626562Z         "int": {
2026-06-22T02:23:00.3626662Z           "complete": false,
2026-06-22T02:23:00.3626751Z           "evidence": []
2026-06-22T02:23:00.3626828Z         },
2026-06-22T02:23:00.3626919Z         "unit": {
2026-06-22T02:23:00.3627000Z           "complete": true,
2026-06-22T02:23:00.3627079Z           "evidence": [
2026-06-22T02:23:00.3627160Z             {
2026-06-22T02:23:00.3627284Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3627364Z               "line": 813
2026-06-22T02:23:00.3627449Z             },
2026-06-22T02:23:00.3627530Z             {
2026-06-22T02:23:00.3627646Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3627739Z               "line": 854
2026-06-22T02:23:00.3627825Z             },
2026-06-22T02:23:00.3627913Z             {
2026-06-22T02:23:00.3628040Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.3628126Z               "line": 928
2026-06-22T02:23:00.3628203Z             }
2026-06-22T02:23:00.3628283Z           ]
2026-06-22T02:23:00.3628369Z         }
2026-06-22T02:23:00.3628450Z       }
2026-06-22T02:23:00.3628532Z     },
2026-06-22T02:23:00.3628617Z     {
2026-06-22T02:23:00.3628746Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-22T02:23:00.3633834Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-22T02:23:00.3634149Z       "requiredStages": [
2026-06-22T02:23:00.3634231Z         "impl",
2026-06-22T02:23:00.3634312Z         "unit",
2026-06-22T02:23:00.3634401Z         "int"
2026-06-22T02:23:00.3634473Z       ],
2026-06-22T02:23:00.3634565Z       "stages": {
2026-06-22T02:23:00.3634645Z         "doc": {
2026-06-22T02:23:00.3634740Z           "complete": false,
2026-06-22T02:23:00.3634836Z           "evidence": []
2026-06-22T02:23:00.3634918Z         },
2026-06-22T02:23:00.3635002Z         "impl": {
2026-06-22T02:23:00.3635087Z           "complete": true,
2026-06-22T02:23:00.3635173Z           "evidence": [
2026-06-22T02:23:00.3635259Z             {
2026-06-22T02:23:00.3635371Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.3635470Z               "line": 204
2026-06-22T02:23:00.3635553Z             }
2026-06-22T02:23:00.3635629Z           ]
2026-06-22T02:23:00.3635714Z         },
2026-06-22T02:23:00.3635795Z         "int": {
2026-06-22T02:23:00.3635896Z           "complete": true,
2026-06-22T02:23:00.3635982Z           "evidence": [
2026-06-22T02:23:00.3636067Z             {
2026-06-22T02:23:00.3636192Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T02:23:00.3636282Z               "line": 296
2026-06-22T02:23:00.3636362Z             }
2026-06-22T02:23:00.3636449Z           ]
2026-06-22T02:23:00.3636530Z         },
2026-06-22T02:23:00.3636616Z         "unit": {
2026-06-22T02:23:00.3636711Z           "complete": true,
2026-06-22T02:23:00.3636797Z           "evidence": [
2026-06-22T02:23:00.3636883Z             {
2026-06-22T02:23:00.3637002Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.3637098Z               "line": 467
2026-06-22T02:23:00.3637184Z             }
2026-06-22T02:23:00.3637259Z           ]
2026-06-22T02:23:00.3637336Z         }
2026-06-22T02:23:00.3637413Z       }
2026-06-22T02:23:00.3637499Z     },
2026-06-22T02:23:00.3637588Z     {
2026-06-22T02:23:00.3637692Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-22T02:23:00.3641060Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-22T02:23:00.3641370Z       "requiredStages": [
2026-06-22T02:23:00.3641451Z         "impl",
2026-06-22T02:23:00.3641536Z         "unit",
2026-06-22T02:23:00.3641614Z         "int"
2026-06-22T02:23:00.3641690Z       ],
2026-06-22T02:23:00.3641776Z       "stages": {
2026-06-22T02:23:00.3641851Z         "doc": {
2026-06-22T02:23:00.3641947Z           "complete": false,
2026-06-22T02:23:00.3642033Z           "evidence": []
2026-06-22T02:23:00.3642114Z         },
2026-06-22T02:23:00.3642200Z         "impl": {
2026-06-22T02:23:00.3642291Z           "complete": true,
2026-06-22T02:23:00.3642394Z           "evidence": [
2026-06-22T02:23:00.3642476Z             {
2026-06-22T02:23:00.3642611Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.3642690Z               "line": 123
2026-06-22T02:23:00.3642771Z             },
2026-06-22T02:23:00.3642841Z             {
2026-06-22T02:23:00.3642957Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:23:00.3643031Z               "line": 134
2026-06-22T02:23:00.3643112Z             }
2026-06-22T02:23:00.3643193Z           ]
2026-06-22T02:23:00.3643269Z         },
2026-06-22T02:23:00.3643355Z         "int": {
2026-06-22T02:23:00.3643436Z           "complete": true,
2026-06-22T02:23:00.3643531Z           "evidence": [
2026-06-22T02:23:00.3643618Z             {
2026-06-22T02:23:00.3643731Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.3643817Z               "line": 312
2026-06-22T02:23:00.3643899Z             },
2026-06-22T02:23:00.3643980Z             {
2026-06-22T02:23:00.3644098Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.3644190Z               "line": 525
2026-06-22T02:23:00.3644280Z             }
2026-06-22T02:23:00.3644361Z           ]
2026-06-22T02:23:00.3644437Z         },
2026-06-22T02:23:00.3644524Z         "unit": {
2026-06-22T02:23:00.3644609Z           "complete": true,
2026-06-22T02:23:00.3644694Z           "evidence": [
2026-06-22T02:23:00.3644771Z             {
2026-06-22T02:23:00.3644895Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.3644976Z               "line": 250
2026-06-22T02:23:00.3645057Z             }
2026-06-22T02:23:00.3645139Z           ]
2026-06-22T02:23:00.3645210Z         }
2026-06-22T02:23:00.3645290Z       }
2026-06-22T02:23:00.3645377Z     },
2026-06-22T02:23:00.3645464Z     {
2026-06-22T02:23:00.3645576Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-22T02:23:00.3647281Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-22T02:23:00.3647392Z       "requiredStages": [
2026-06-22T02:23:00.3647471Z         "impl",
2026-06-22T02:23:00.3647557Z         "unit"
2026-06-22T02:23:00.3647638Z       ],
2026-06-22T02:23:00.3647725Z       "stages": {
2026-06-22T02:23:00.3647805Z         "doc": {
2026-06-22T02:23:00.3647891Z           "complete": false,
2026-06-22T02:23:00.3647982Z           "evidence": []
2026-06-22T02:23:00.3650912Z         },
2026-06-22T02:23:00.3650997Z         "impl": {
2026-06-22T02:23:00.3651234Z           "complete": true,
2026-06-22T02:23:00.3651316Z           "evidence": [
2026-06-22T02:23:00.3651396Z             {
2026-06-22T02:23:00.3651625Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3651711Z               "line": 31
2026-06-22T02:23:00.3651791Z             }
2026-06-22T02:23:00.3651878Z           ]
2026-06-22T02:23:00.3651963Z         },
2026-06-22T02:23:00.3652044Z         "int": {
2026-06-22T02:23:00.3652125Z           "complete": false,
2026-06-22T02:23:00.3652217Z           "evidence": []
2026-06-22T02:23:00.3652283Z         },
2026-06-22T02:23:00.3652359Z         "unit": {
2026-06-22T02:23:00.3652445Z           "complete": true,
2026-06-22T02:23:00.3652527Z           "evidence": [
2026-06-22T02:23:00.3652607Z             {
2026-06-22T02:23:00.3652726Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3652809Z               "line": 181
2026-06-22T02:23:00.3652889Z             }
2026-06-22T02:23:00.3652973Z           ]
2026-06-22T02:23:00.3653060Z         }
2026-06-22T02:23:00.3653142Z       }
2026-06-22T02:23:00.3653218Z     },
2026-06-22T02:23:00.3653312Z     {
2026-06-22T02:23:00.3653441Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-22T02:23:00.3653605Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-22T02:23:00.3653695Z       "requiredStages": [
2026-06-22T02:23:00.3653781Z         "impl",
2026-06-22T02:23:00.3653863Z         "unit"
2026-06-22T02:23:00.3653948Z       ],
2026-06-22T02:23:00.3654034Z       "stages": {
2026-06-22T02:23:00.3654115Z         "doc": {
2026-06-22T02:23:00.3654196Z           "complete": false,
2026-06-22T02:23:00.3654291Z           "evidence": []
2026-06-22T02:23:00.3654377Z         },
2026-06-22T02:23:00.3654460Z         "impl": {
2026-06-22T02:23:00.3654550Z           "complete": true,
2026-06-22T02:23:00.3654634Z           "evidence": [
2026-06-22T02:23:00.3654717Z             {
2026-06-22T02:23:00.3654835Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3654935Z               "line": 49
2026-06-22T02:23:00.3655016Z             },
2026-06-22T02:23:00.3655108Z             {
2026-06-22T02:23:00.3655231Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3655317Z               "line": 81
2026-06-22T02:23:00.3655404Z             }
2026-06-22T02:23:00.3655488Z           ]
2026-06-22T02:23:00.3655569Z         },
2026-06-22T02:23:00.3655646Z         "int": {
2026-06-22T02:23:00.3655728Z           "complete": false,
2026-06-22T02:23:00.3655822Z           "evidence": []
2026-06-22T02:23:00.3655894Z         },
2026-06-22T02:23:00.3655976Z         "unit": {
2026-06-22T02:23:00.3656067Z           "complete": true,
2026-06-22T02:23:00.3656155Z           "evidence": [
2026-06-22T02:23:00.3656241Z             {
2026-06-22T02:23:00.3656350Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3656440Z               "line": 156
2026-06-22T02:23:00.3656525Z             },
2026-06-22T02:23:00.3656615Z             {
2026-06-22T02:23:00.3656725Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3656820Z               "line": 173
2026-06-22T02:23:00.3656905Z             },
2026-06-22T02:23:00.3656983Z             {
2026-06-22T02:23:00.3657102Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3657187Z               "line": 196
2026-06-22T02:23:00.3657269Z             }
2026-06-22T02:23:00.3657345Z           ]
2026-06-22T02:23:00.3657426Z         }
2026-06-22T02:23:00.3657511Z       }
2026-06-22T02:23:00.3657598Z     },
2026-06-22T02:23:00.3657679Z     {
2026-06-22T02:23:00.3657802Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-22T02:23:00.3657971Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-22T02:23:00.3658074Z       "requiredStages": [
2026-06-22T02:23:00.3658146Z         "impl",
2026-06-22T02:23:00.3658232Z         "unit"
2026-06-22T02:23:00.3658313Z       ],
2026-06-22T02:23:00.3658398Z       "stages": {
2026-06-22T02:23:00.3658581Z         "doc": {
2026-06-22T02:23:00.3658675Z           "complete": false,
2026-06-22T02:23:00.3658836Z           "evidence": []
2026-06-22T02:23:00.3658917Z         },
2026-06-22T02:23:00.3659082Z         "impl": {
2026-06-22T02:23:00.3659172Z           "complete": true,
2026-06-22T02:23:00.3659258Z           "evidence": [
2026-06-22T02:23:00.3659335Z             {
2026-06-22T02:23:00.3659458Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3659535Z               "line": 120
2026-06-22T02:23:00.3659617Z             }
2026-06-22T02:23:00.3659702Z           ]
2026-06-22T02:23:00.3659782Z         },
2026-06-22T02:23:00.3659860Z         "int": {
2026-06-22T02:23:00.3659940Z           "complete": false,
2026-06-22T02:23:00.3660021Z           "evidence": []
2026-06-22T02:23:00.3660111Z         },
2026-06-22T02:23:00.3660189Z         "unit": {
2026-06-22T02:23:00.3660283Z           "complete": true,
2026-06-22T02:23:00.3660364Z           "evidence": [
2026-06-22T02:23:00.3660460Z             {
2026-06-22T02:23:00.3660565Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3660655Z               "line": 212
2026-06-22T02:23:00.3660736Z             },
2026-06-22T02:23:00.3660819Z             {
2026-06-22T02:23:00.3660937Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3661018Z               "line": 221
2026-06-22T02:23:00.3661099Z             },
2026-06-22T02:23:00.3661171Z             {
2026-06-22T02:23:00.3661284Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3661366Z               "line": 229
2026-06-22T02:23:00.3661443Z             },
2026-06-22T02:23:00.3661524Z             {
2026-06-22T02:23:00.3661627Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3661717Z               "line": 239
2026-06-22T02:23:00.3661794Z             },
2026-06-22T02:23:00.3661876Z             {
2026-06-22T02:23:00.3661993Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:23:00.3662085Z               "line": 249
2026-06-22T02:23:00.3662172Z             }
2026-06-22T02:23:00.3662252Z           ]
2026-06-22T02:23:00.3662337Z         }
2026-06-22T02:23:00.3662420Z       }
2026-06-22T02:23:00.3662500Z     },
2026-06-22T02:23:00.3662586Z     {
2026-06-22T02:23:00.3662690Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-22T02:23:00.3662848Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-22T02:23:00.3662938Z       "requiredStages": [
2026-06-22T02:23:00.3663024Z         "impl",
2026-06-22T02:23:00.3663101Z         "unit"
2026-06-22T02:23:00.3663186Z       ],
2026-06-22T02:23:00.3663267Z       "stages": {
2026-06-22T02:23:00.3663349Z         "doc": {
2026-06-22T02:23:00.3663430Z           "complete": false,
2026-06-22T02:23:00.3663515Z           "evidence": []
2026-06-22T02:23:00.3663591Z         },
2026-06-22T02:23:00.3663678Z         "impl": {
2026-06-22T02:23:00.3663759Z           "complete": true,
2026-06-22T02:23:00.3663858Z           "evidence": [
2026-06-22T02:23:00.3663929Z             {
2026-06-22T02:23:00.3664034Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.3664119Z               "line": 14
2026-06-22T02:23:00.3664198Z             },
2026-06-22T02:23:00.3664270Z             {
2026-06-22T02:23:00.3664385Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.3664471Z               "line": 63
2026-06-22T02:23:00.3664546Z             }
2026-06-22T02:23:00.3664627Z           ]
2026-06-22T02:23:00.3664710Z         },
2026-06-22T02:23:00.3664790Z         "int": {
2026-06-22T02:23:00.3664875Z           "complete": false,
2026-06-22T02:23:00.3664962Z           "evidence": []
2026-06-22T02:23:00.3665053Z         },
2026-06-22T02:23:00.3665133Z         "unit": {
2026-06-22T02:23:00.3665228Z           "complete": true,
2026-06-22T02:23:00.3665310Z           "evidence": [
2026-06-22T02:23:00.3665395Z             {
2026-06-22T02:23:00.3665500Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.3665706Z               "line": 164
2026-06-22T02:23:00.3665782Z             },
2026-06-22T02:23:00.3665949Z             {
2026-06-22T02:23:00.3666053Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.3666139Z               "line": 198
2026-06-22T02:23:00.3666226Z             },
2026-06-22T02:23:00.3666302Z             {
2026-06-22T02:23:00.3666410Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.3666497Z               "line": 220
2026-06-22T02:23:00.3666570Z             }
2026-06-22T02:23:00.3666655Z           ]
2026-06-22T02:23:00.3666734Z         }
2026-06-22T02:23:00.3666815Z       }
2026-06-22T02:23:00.3666901Z     },
2026-06-22T02:23:00.3666986Z     {
2026-06-22T02:23:00.3667085Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-22T02:23:00.3668425Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-22T02:23:00.3668540Z       "requiredStages": [],
2026-06-22T02:23:00.3668625Z       "stages": {
2026-06-22T02:23:00.3668706Z         "doc": {
2026-06-22T02:23:00.3668788Z           "complete": true,
2026-06-22T02:23:00.3668869Z           "evidence": [
2026-06-22T02:23:00.3669016Z             {
2026-06-22T02:23:00.3669117Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3669207Z               "line": 165
2026-06-22T02:23:00.3669287Z             }
2026-06-22T02:23:00.3669372Z           ]
2026-06-22T02:23:00.3669453Z         },
2026-06-22T02:23:00.3669534Z         "impl": {
2026-06-22T02:23:00.3669618Z           "complete": false,
2026-06-22T02:23:00.3669698Z           "evidence": []
2026-06-22T02:23:00.3669780Z         },
2026-06-22T02:23:00.3669867Z         "int": {
2026-06-22T02:23:00.3669957Z           "complete": false,
2026-06-22T02:23:00.3670037Z           "evidence": []
2026-06-22T02:23:00.3670120Z         },
2026-06-22T02:23:00.3670200Z         "unit": {
2026-06-22T02:23:00.3670285Z           "complete": false,
2026-06-22T02:23:00.3670366Z           "evidence": []
2026-06-22T02:23:00.3670439Z         }
2026-06-22T02:23:00.3670515Z       }
2026-06-22T02:23:00.3670600Z     },
2026-06-22T02:23:00.3670676Z     {
2026-06-22T02:23:00.3670796Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-22T02:23:00.3671005Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-22T02:23:00.3671102Z       "requiredStages": [
2026-06-22T02:23:00.3671187Z         "impl",
2026-06-22T02:23:00.3671273Z         "unit"
2026-06-22T02:23:00.3671359Z       ],
2026-06-22T02:23:00.3671435Z       "stages": {
2026-06-22T02:23:00.3671511Z         "doc": {
2026-06-22T02:23:00.3671592Z           "complete": false,
2026-06-22T02:23:00.3671684Z           "evidence": []
2026-06-22T02:23:00.3671764Z         },
2026-06-22T02:23:00.3671859Z         "impl": {
2026-06-22T02:23:00.3671955Z           "complete": true,
2026-06-22T02:23:00.3672032Z           "evidence": [
2026-06-22T02:23:00.3672121Z             {
2026-06-22T02:23:00.3672234Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3672315Z               "line": 76
2026-06-22T02:23:00.3672388Z             },
2026-06-22T02:23:00.3672469Z             {
2026-06-22T02:23:00.3672573Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3672660Z               "line": 167
2026-06-22T02:23:00.3672746Z             },
2026-06-22T02:23:00.3672826Z             {
2026-06-22T02:23:00.3672931Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3673013Z               "line": 233
2026-06-22T02:23:00.3673098Z             },
2026-06-22T02:23:00.3673179Z             {
2026-06-22T02:23:00.3673274Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3673475Z               "line": 272
2026-06-22T02:23:00.3673638Z             }
2026-06-22T02:23:00.3673723Z           ]
2026-06-22T02:23:00.3673790Z         },
2026-06-22T02:23:00.3673870Z         "int": {
2026-06-22T02:23:00.3673957Z           "complete": false,
2026-06-22T02:23:00.3674042Z           "evidence": []
2026-06-22T02:23:00.3674118Z         },
2026-06-22T02:23:00.3674204Z         "unit": {
2026-06-22T02:23:00.3674282Z           "complete": true,
2026-06-22T02:23:00.3674366Z           "evidence": [
2026-06-22T02:23:00.3674441Z             {
2026-06-22T02:23:00.3674556Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3674637Z               "line": 321
2026-06-22T02:23:00.3674716Z             },
2026-06-22T02:23:00.3674787Z             {
2026-06-22T02:23:00.3674897Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3674974Z               "line": 329
2026-06-22T02:23:00.3675050Z             },
2026-06-22T02:23:00.3675135Z             {
2026-06-22T02:23:00.3675240Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3675331Z               "line": 356
2026-06-22T02:23:00.3675412Z             },
2026-06-22T02:23:00.3675493Z             {
2026-06-22T02:23:00.3675599Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3675679Z               "line": 395
2026-06-22T02:23:00.3675754Z             },
2026-06-22T02:23:00.3675837Z             {
2026-06-22T02:23:00.3675942Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3676027Z               "line": 406
2026-06-22T02:23:00.3676108Z             },
2026-06-22T02:23:00.3676190Z             {
2026-06-22T02:23:00.3676294Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3676380Z               "line": 418
2026-06-22T02:23:00.3676461Z             },
2026-06-22T02:23:00.3676543Z             {
2026-06-22T02:23:00.3676646Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:23:00.3676737Z               "line": 442
2026-06-22T02:23:00.3676820Z             }
2026-06-22T02:23:00.3676910Z           ]
2026-06-22T02:23:00.3676990Z         }
2026-06-22T02:23:00.3677067Z       }
2026-06-22T02:23:00.3677144Z     },
2026-06-22T02:23:00.3677220Z     {
2026-06-22T02:23:00.3677323Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-22T02:23:00.3677461Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-22T02:23:00.3677546Z       "requiredStages": [
2026-06-22T02:23:00.3677630Z         "impl",
2026-06-22T02:23:00.3677702Z         "int"
2026-06-22T02:23:00.3677783Z       ],
2026-06-22T02:23:00.3677865Z       "stages": {
2026-06-22T02:23:00.3677950Z         "doc": {
2026-06-22T02:23:00.3678040Z           "complete": false,
2026-06-22T02:23:00.3678127Z           "evidence": []
2026-06-22T02:23:00.3678208Z         },
2026-06-22T02:23:00.3678288Z         "impl": {
2026-06-22T02:23:00.3678379Z           "complete": true,
2026-06-22T02:23:00.3678466Z           "evidence": [
2026-06-22T02:23:00.3678552Z             {
2026-06-22T02:23:00.3678670Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3678761Z               "line": 22
2026-06-22T02:23:00.3678837Z             }
2026-06-22T02:23:00.3678918Z           ]
2026-06-22T02:23:00.3679076Z         },
2026-06-22T02:23:00.3679152Z         "int": {
2026-06-22T02:23:00.3679238Z           "complete": true,
2026-06-22T02:23:00.3679328Z           "evidence": [
2026-06-22T02:23:00.3679405Z             {
2026-06-22T02:23:00.3679532Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-22T02:23:00.3679609Z               "line": 18
2026-06-22T02:23:00.3679691Z             }
2026-06-22T02:23:00.3679772Z           ]
2026-06-22T02:23:00.3679842Z         },
2026-06-22T02:23:00.3679932Z         "unit": {
2026-06-22T02:23:00.3680009Z           "complete": false,
2026-06-22T02:23:00.3680099Z           "evidence": []
2026-06-22T02:23:00.3680164Z         }
2026-06-22T02:23:00.3680360Z       }
2026-06-22T02:23:00.3680437Z     },
2026-06-22T02:23:00.3680521Z     {
2026-06-22T02:23:00.3680626Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-22T02:23:00.3680898Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-22T02:23:00.3680995Z       "requiredStages": [
2026-06-22T02:23:00.3681080Z         "impl",
2026-06-22T02:23:00.3681160Z         "unit"
2026-06-22T02:23:00.3681236Z       ],
2026-06-22T02:23:00.3681314Z       "stages": {
2026-06-22T02:23:00.3681399Z         "doc": {
2026-06-22T02:23:00.3681484Z           "complete": false,
2026-06-22T02:23:00.3681575Z           "evidence": []
2026-06-22T02:23:00.3681643Z         },
2026-06-22T02:23:00.3681728Z         "impl": {
2026-06-22T02:23:00.3681809Z           "complete": true,
2026-06-22T02:23:00.3681890Z           "evidence": [
2026-06-22T02:23:00.3681982Z             {
2026-06-22T02:23:00.3682095Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3682186Z               "line": 465
2026-06-22T02:23:00.3682273Z             },
2026-06-22T02:23:00.3682357Z             {
2026-06-22T02:23:00.3682472Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3682563Z               "line": 27
2026-06-22T02:23:00.3682644Z             }
2026-06-22T02:23:00.3682723Z           ]
2026-06-22T02:23:00.3682804Z         },
2026-06-22T02:23:00.3682885Z         "int": {
2026-06-22T02:23:00.3682977Z           "complete": false,
2026-06-22T02:23:00.3683062Z           "evidence": []
2026-06-22T02:23:00.3683142Z         },
2026-06-22T02:23:00.3683224Z         "unit": {
2026-06-22T02:23:00.3683306Z           "complete": true,
2026-06-22T02:23:00.3683395Z           "evidence": [
2026-06-22T02:23:00.3683476Z             {
2026-06-22T02:23:00.3683597Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3683678Z               "line": 990
2026-06-22T02:23:00.3683758Z             },
2026-06-22T02:23:00.3683839Z             {
2026-06-22T02:23:00.3683949Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3684039Z               "line": 181
2026-06-22T02:23:00.3684120Z             }
2026-06-22T02:23:00.3684198Z           ]
2026-06-22T02:23:00.3684269Z         }
2026-06-22T02:23:00.3684345Z       }
2026-06-22T02:23:00.3684416Z     },
2026-06-22T02:23:00.3684499Z     {
2026-06-22T02:23:00.3684621Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-22T02:23:00.3684769Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-22T02:23:00.3684865Z       "requiredStages": [
2026-06-22T02:23:00.3684940Z         "impl",
2026-06-22T02:23:00.3685025Z         "unit"
2026-06-22T02:23:00.3685111Z       ],
2026-06-22T02:23:00.3685192Z       "stages": {
2026-06-22T02:23:00.3685276Z         "doc": {
2026-06-22T02:23:00.3685361Z           "complete": false,
2026-06-22T02:23:00.3685443Z           "evidence": []
2026-06-22T02:23:00.3685525Z         },
2026-06-22T02:23:00.3685615Z         "impl": {
2026-06-22T02:23:00.3685709Z           "complete": true,
2026-06-22T02:23:00.3685796Z           "evidence": [
2026-06-22T02:23:00.3685882Z             {
2026-06-22T02:23:00.3685995Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3686087Z               "line": 73
2026-06-22T02:23:00.3686164Z             },
2026-06-22T02:23:00.3686249Z             {
2026-06-22T02:23:00.3686368Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3686449Z               "line": 972
2026-06-22T02:23:00.3686535Z             },
2026-06-22T02:23:00.3686616Z             {
2026-06-22T02:23:00.3686726Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:23:00.3686812Z               "line": 20
2026-06-22T02:23:00.3686897Z             },
2026-06-22T02:23:00.3686982Z             {
2026-06-22T02:23:00.3687089Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:23:00.3687179Z               "line": 100
2026-06-22T02:23:00.3687260Z             },
2026-06-22T02:23:00.3687346Z             {
2026-06-22T02:23:00.3687545Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3687637Z               "line": 619
2026-06-22T02:23:00.3687771Z             },
2026-06-22T02:23:00.3687850Z             {
2026-06-22T02:23:00.3687968Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:23:00.3688050Z               "line": 68
2026-06-22T02:23:00.3688134Z             },
2026-06-22T02:23:00.3688214Z             {
2026-06-22T02:23:00.3688339Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:23:00.3688425Z               "line": 80
2026-06-22T02:23:00.3688496Z             }
2026-06-22T02:23:00.3688581Z           ]
2026-06-22T02:23:00.3688659Z         },
2026-06-22T02:23:00.3688744Z         "int": {
2026-06-22T02:23:00.3688830Z           "complete": true,
2026-06-22T02:23:00.3688910Z           "evidence": [
2026-06-22T02:23:00.3689064Z             {
2026-06-22T02:23:00.3689182Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T02:23:00.3689278Z               "line": 44
2026-06-22T02:23:00.3689360Z             }
2026-06-22T02:23:00.3689440Z           ]
2026-06-22T02:23:00.3689535Z         },
2026-06-22T02:23:00.3689627Z         "unit": {
2026-06-22T02:23:00.3689726Z           "complete": true,
2026-06-22T02:23:00.3689807Z           "evidence": [
2026-06-22T02:23:00.3689888Z             {
2026-06-22T02:23:00.3689994Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3690088Z               "line": 1181
2026-06-22T02:23:00.3690160Z             },
2026-06-22T02:23:00.3690238Z             {
2026-06-22T02:23:00.3690356Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.3690431Z               "line": 1197
2026-06-22T02:23:00.3690516Z             },
2026-06-22T02:23:00.3690597Z             {
2026-06-22T02:23:00.3690715Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3690800Z               "line": 2454
2026-06-22T02:23:00.3690886Z             },
2026-06-22T02:23:00.3690977Z             {
2026-06-22T02:23:00.3691086Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:23:00.3691177Z               "line": 152
2026-06-22T02:23:00.3691259Z             },
2026-06-22T02:23:00.3691340Z             {
2026-06-22T02:23:00.3691444Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:23:00.3691530Z               "line": 175
2026-06-22T02:23:00.3691611Z             },
2026-06-22T02:23:00.3691692Z             {
2026-06-22T02:23:00.3691792Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:23:00.3691864Z               "line": 186
2026-06-22T02:23:00.3691945Z             },
2026-06-22T02:23:00.3692026Z             {
2026-06-22T02:23:00.3692125Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:23:00.3692208Z               "line": 202
2026-06-22T02:23:00.3692288Z             },
2026-06-22T02:23:00.3692373Z             {
2026-06-22T02:23:00.3692480Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:23:00.3692575Z               "line": 216
2026-06-22T02:23:00.3692655Z             },
2026-06-22T02:23:00.3692746Z             {
2026-06-22T02:23:00.3692867Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:23:00.3692941Z               "line": 137
2026-06-22T02:23:00.3693027Z             },
2026-06-22T02:23:00.3693100Z             {
2026-06-22T02:23:00.3693205Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3693298Z               "line": 8152
2026-06-22T02:23:00.3693383Z             },
2026-06-22T02:23:00.3693465Z             {
2026-06-22T02:23:00.3693571Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T02:23:00.3693655Z               "line": 30
2026-06-22T02:23:00.3693736Z             },
2026-06-22T02:23:00.3693823Z             {
2026-06-22T02:23:00.3693927Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T02:23:00.3694003Z               "line": 73
2026-06-22T02:23:00.3694090Z             }
2026-06-22T02:23:00.3694275Z           ]
2026-06-22T02:23:00.3694356Z         }
2026-06-22T02:23:00.3694439Z       }
2026-06-22T02:23:00.3694613Z     },
2026-06-22T02:23:00.3694695Z     {
2026-06-22T02:23:00.3694805Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-22T02:23:00.3698713Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-22T02:23:00.3698831Z       "requiredStages": [
2026-06-22T02:23:00.3698913Z         "impl",
2026-06-22T02:23:00.3699075Z         "unit",
2026-06-22T02:23:00.3699156Z         "int"
2026-06-22T02:23:00.3699238Z       ],
2026-06-22T02:23:00.3699319Z       "stages": {
2026-06-22T02:23:00.3699394Z         "doc": {
2026-06-22T02:23:00.3699485Z           "complete": false,
2026-06-22T02:23:00.3699581Z           "evidence": []
2026-06-22T02:23:00.3699662Z         },
2026-06-22T02:23:00.3699747Z         "impl": {
2026-06-22T02:23:00.3699853Z           "complete": true,
2026-06-22T02:23:00.3699934Z           "evidence": [
2026-06-22T02:23:00.3700015Z             {
2026-06-22T02:23:00.3700138Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3700220Z               "line": 510
2026-06-22T02:23:00.3700291Z             },
2026-06-22T02:23:00.3700377Z             {
2026-06-22T02:23:00.3700493Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3700573Z               "line": 704
2026-06-22T02:23:00.3700657Z             }
2026-06-22T02:23:00.3700739Z           ]
2026-06-22T02:23:00.3700822Z         },
2026-06-22T02:23:00.3700902Z         "int": {
2026-06-22T02:23:00.3700995Z           "complete": true,
2026-06-22T02:23:00.3701076Z           "evidence": [
2026-06-22T02:23:00.3701153Z             {
2026-06-22T02:23:00.3701271Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3701355Z               "line": 1119
2026-06-22T02:23:00.3701437Z             },
2026-06-22T02:23:00.3701528Z             {
2026-06-22T02:23:00.3701651Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T02:23:00.3701742Z               "line": 312
2026-06-22T02:23:00.3701819Z             }
2026-06-22T02:23:00.3701905Z           ]
2026-06-22T02:23:00.3701980Z         },
2026-06-22T02:23:00.3702061Z         "unit": {
2026-06-22T02:23:00.3702143Z           "complete": true,
2026-06-22T02:23:00.3702238Z           "evidence": [
2026-06-22T02:23:00.3702318Z             {
2026-06-22T02:23:00.3702434Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3702524Z               "line": 821
2026-06-22T02:23:00.3702600Z             }
2026-06-22T02:23:00.3702681Z           ]
2026-06-22T02:23:00.3702768Z         }
2026-06-22T02:23:00.3702853Z       }
2026-06-22T02:23:00.3702938Z     },
2026-06-22T02:23:00.3703020Z     {
2026-06-22T02:23:00.3703220Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-22T02:23:00.3703459Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-22T02:23:00.3703640Z       "requiredStages": [
2026-06-22T02:23:00.3703722Z         "impl",
2026-06-22T02:23:00.3703807Z         "unit"
2026-06-22T02:23:00.3703891Z       ],
2026-06-22T02:23:00.3703977Z       "stages": {
2026-06-22T02:23:00.3704059Z         "doc": {
2026-06-22T02:23:00.3704150Z           "complete": true,
2026-06-22T02:23:00.3704234Z           "evidence": [
2026-06-22T02:23:00.3704316Z             {
2026-06-22T02:23:00.3704426Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3704511Z               "line": 133
2026-06-22T02:23:00.3704587Z             }
2026-06-22T02:23:00.3704679Z           ]
2026-06-22T02:23:00.3704759Z         },
2026-06-22T02:23:00.3704844Z         "impl": {
2026-06-22T02:23:00.3704921Z           "complete": true,
2026-06-22T02:23:00.3705013Z           "evidence": [
2026-06-22T02:23:00.3705098Z             {
2026-06-22T02:23:00.3705202Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.3705289Z               "line": 65
2026-06-22T02:23:00.3705370Z             },
2026-06-22T02:23:00.3705446Z             {
2026-06-22T02:23:00.3705551Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:23:00.3705628Z               "line": 17
2026-06-22T02:23:00.3705718Z             },
2026-06-22T02:23:00.3705794Z             {
2026-06-22T02:23:00.3705904Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3705986Z               "line": 146
2026-06-22T02:23:00.3706070Z             },
2026-06-22T02:23:00.3706155Z             {
2026-06-22T02:23:00.3706270Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3706350Z               "line": 310
2026-06-22T02:23:00.3706430Z             },
2026-06-22T02:23:00.3706510Z             {
2026-06-22T02:23:00.3706616Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.3706716Z               "line": 441
2026-06-22T02:23:00.3706797Z             },
2026-06-22T02:23:00.3706892Z             {
2026-06-22T02:23:00.3707007Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.3707092Z               "line": 32
2026-06-22T02:23:00.3707178Z             },
2026-06-22T02:23:00.3707260Z             {
2026-06-22T02:23:00.3707369Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3707445Z               "line": 1283
2026-06-22T02:23:00.3707532Z             },
2026-06-22T02:23:00.3707622Z             {
2026-06-22T02:23:00.3707717Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3707803Z               "line": 6161
2026-06-22T02:23:00.3707885Z             },
2026-06-22T02:23:00.3707974Z             {
2026-06-22T02:23:00.3708070Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3708161Z               "line": 6443
2026-06-22T02:23:00.3708237Z             }
2026-06-22T02:23:00.3708313Z           ]
2026-06-22T02:23:00.3708404Z         },
2026-06-22T02:23:00.3708476Z         "int": {
2026-06-22T02:23:00.3708580Z           "complete": false,
2026-06-22T02:23:00.3708670Z           "evidence": []
2026-06-22T02:23:00.3708757Z         },
2026-06-22T02:23:00.3708839Z         "unit": {
2026-06-22T02:23:00.3708928Z           "complete": true,
2026-06-22T02:23:00.3709094Z           "evidence": [
2026-06-22T02:23:00.3709170Z             {
2026-06-22T02:23:00.3709273Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:23:00.3709353Z               "line": 94
2026-06-22T02:23:00.3709440Z             },
2026-06-22T02:23:00.3709526Z             {
2026-06-22T02:23:00.3709631Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:23:00.3709716Z               "line": 111
2026-06-22T02:23:00.3709793Z             },
2026-06-22T02:23:00.3709869Z             {
2026-06-22T02:23:00.3709978Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:23:00.3710060Z               "line": 124
2026-06-22T02:23:00.3710246Z             },
2026-06-22T02:23:00.3710331Z             {
2026-06-22T02:23:00.3710433Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:23:00.3710622Z               "line": 134
2026-06-22T02:23:00.3710708Z             },
2026-06-22T02:23:00.3710785Z             {
2026-06-22T02:23:00.3710889Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:23:00.3710970Z               "line": 144
2026-06-22T02:23:00.3711058Z             },
2026-06-22T02:23:00.3711138Z             {
2026-06-22T02:23:00.3711242Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:23:00.3711333Z               "line": 156
2026-06-22T02:23:00.3711415Z             },
2026-06-22T02:23:00.3711495Z             {
2026-06-22T02:23:00.3711622Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3711704Z               "line": 746
2026-06-22T02:23:00.3711789Z             },
2026-06-22T02:23:00.3711868Z             {
2026-06-22T02:23:00.3711992Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.3712074Z               "line": 309
2026-06-22T02:23:00.3712164Z             }
2026-06-22T02:23:00.3712249Z           ]
2026-06-22T02:23:00.3712321Z         }
2026-06-22T02:23:00.3712403Z       }
2026-06-22T02:23:00.3712475Z     },
2026-06-22T02:23:00.3712559Z     {
2026-06-22T02:23:00.3712665Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-22T02:23:00.3712789Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-22T02:23:00.3712873Z       "requiredStages": [
2026-06-22T02:23:00.3712951Z         "impl",
2026-06-22T02:23:00.3713037Z         "unit"
2026-06-22T02:23:00.3713122Z       ],
2026-06-22T02:23:00.3713198Z       "stages": {
2026-06-22T02:23:00.3713285Z         "doc": {
2026-06-22T02:23:00.3713371Z           "complete": false,
2026-06-22T02:23:00.3713461Z           "evidence": []
2026-06-22T02:23:00.3713542Z         },
2026-06-22T02:23:00.3713628Z         "impl": {
2026-06-22T02:23:00.3713714Z           "complete": true,
2026-06-22T02:23:00.3713814Z           "evidence": [
2026-06-22T02:23:00.3713900Z             {
2026-06-22T02:23:00.3714019Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.3714104Z               "line": 128
2026-06-22T02:23:00.3714181Z             }
2026-06-22T02:23:00.3714268Z           ]
2026-06-22T02:23:00.3714353Z         },
2026-06-22T02:23:00.3714447Z         "int": {
2026-06-22T02:23:00.3714547Z           "complete": false,
2026-06-22T02:23:00.3714624Z           "evidence": []
2026-06-22T02:23:00.3714715Z         },
2026-06-22T02:23:00.3714794Z         "unit": {
2026-06-22T02:23:00.3714886Z           "complete": true,
2026-06-22T02:23:00.3714967Z           "evidence": [
2026-06-22T02:23:00.3715043Z             {
2026-06-22T02:23:00.3715152Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.3715230Z               "line": 205
2026-06-22T02:23:00.3715315Z             }
2026-06-22T02:23:00.3715395Z           ]
2026-06-22T02:23:00.3715481Z         }
2026-06-22T02:23:00.3715563Z       }
2026-06-22T02:23:00.3718168Z     },
2026-06-22T02:23:00.3718258Z     {
2026-06-22T02:23:00.3718401Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-22T02:23:00.3718568Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-22T02:23:00.3718649Z       "requiredStages": [
2026-06-22T02:23:00.3718726Z         "impl",
2026-06-22T02:23:00.3718811Z         "unit"
2026-06-22T02:23:00.3718892Z       ],
2026-06-22T02:23:00.3719055Z       "stages": {
2026-06-22T02:23:00.3719136Z         "doc": {
2026-06-22T02:23:00.3719231Z           "complete": false,
2026-06-22T02:23:00.3719307Z           "evidence": []
2026-06-22T02:23:00.3719390Z         },
2026-06-22T02:23:00.3719469Z         "impl": {
2026-06-22T02:23:00.3719564Z           "complete": true,
2026-06-22T02:23:00.3719654Z           "evidence": [
2026-06-22T02:23:00.3719735Z             {
2026-06-22T02:23:00.3719847Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3720067Z               "line": 367
2026-06-22T02:23:00.3720148Z             },
2026-06-22T02:23:00.3720229Z             {
2026-06-22T02:23:00.3720434Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3720519Z               "line": 378
2026-06-22T02:23:00.3720595Z             },
2026-06-22T02:23:00.3720678Z             {
2026-06-22T02:23:00.3720778Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3720863Z               "line": 396
2026-06-22T02:23:00.3720940Z             }
2026-06-22T02:23:00.3721011Z           ]
2026-06-22T02:23:00.3721082Z         },
2026-06-22T02:23:00.3721163Z         "int": {
2026-06-22T02:23:00.3721259Z           "complete": false,
2026-06-22T02:23:00.3721345Z           "evidence": []
2026-06-22T02:23:00.3721426Z         },
2026-06-22T02:23:00.3721502Z         "unit": {
2026-06-22T02:23:00.3721593Z           "complete": true,
2026-06-22T02:23:00.3721684Z           "evidence": [
2026-06-22T02:23:00.3721764Z             {
2026-06-22T02:23:00.3721869Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3721956Z               "line": 420
2026-06-22T02:23:00.3722036Z             },
2026-06-22T02:23:00.3722107Z             {
2026-06-22T02:23:00.3722206Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3722292Z               "line": 441
2026-06-22T02:23:00.3722377Z             },
2026-06-22T02:23:00.3722452Z             {
2026-06-22T02:23:00.3722552Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3722634Z               "line": 811
2026-06-22T02:23:00.3722715Z             },
2026-06-22T02:23:00.3722799Z             {
2026-06-22T02:23:00.3722911Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3722996Z               "line": 822
2026-06-22T02:23:00.3723077Z             },
2026-06-22T02:23:00.3723158Z             {
2026-06-22T02:23:00.3723268Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3723344Z               "line": 835
2026-06-22T02:23:00.3723434Z             }
2026-06-22T02:23:00.3723516Z           ]
2026-06-22T02:23:00.3723592Z         }
2026-06-22T02:23:00.3723682Z       }
2026-06-22T02:23:00.3723763Z     },
2026-06-22T02:23:00.3723845Z     {
2026-06-22T02:23:00.3723964Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-22T02:23:00.3731399Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-22T02:23:00.3731718Z       "requiredStages": [
2026-06-22T02:23:00.3731804Z         "impl",
2026-06-22T02:23:00.3731887Z         "unit",
2026-06-22T02:23:00.3731971Z         "int"
2026-06-22T02:23:00.3732057Z       ],
2026-06-22T02:23:00.3732139Z       "stages": {
2026-06-22T02:23:00.3732234Z         "doc": {
2026-06-22T02:23:00.3732329Z           "complete": false,
2026-06-22T02:23:00.3732410Z           "evidence": []
2026-06-22T02:23:00.3732492Z         },
2026-06-22T02:23:00.3732573Z         "impl": {
2026-06-22T02:23:00.3732667Z           "complete": true,
2026-06-22T02:23:00.3732752Z           "evidence": [
2026-06-22T02:23:00.3732829Z             {
2026-06-22T02:23:00.3732946Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3733031Z               "line": 321
2026-06-22T02:23:00.3733107Z             },
2026-06-22T02:23:00.3733194Z             {
2026-06-22T02:23:00.3733308Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3733383Z               "line": 758
2026-06-22T02:23:00.3733466Z             },
2026-06-22T02:23:00.3733547Z             {
2026-06-22T02:23:00.3733665Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3733737Z               "line": 1027
2026-06-22T02:23:00.3733819Z             }
2026-06-22T02:23:00.3733909Z           ]
2026-06-22T02:23:00.3733980Z         },
2026-06-22T02:23:00.3734066Z         "int": {
2026-06-22T02:23:00.3734148Z           "complete": true,
2026-06-22T02:23:00.3734238Z           "evidence": [
2026-06-22T02:23:00.3734314Z             {
2026-06-22T02:23:00.3734463Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.3734543Z               "line": 288
2026-06-22T02:23:00.3734624Z             },
2026-06-22T02:23:00.3734705Z             {
2026-06-22T02:23:00.3734843Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.3734925Z               "line": 414
2026-06-22T02:23:00.3735006Z             }
2026-06-22T02:23:00.3735074Z           ]
2026-06-22T02:23:00.3735158Z         },
2026-06-22T02:23:00.3735229Z         "unit": {
2026-06-22T02:23:00.3735316Z           "complete": true,
2026-06-22T02:23:00.3735393Z           "evidence": [
2026-06-22T02:23:00.3735478Z             {
2026-06-22T02:23:00.3735595Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3735672Z               "line": 2581
2026-06-22T02:23:00.3735759Z             }
2026-06-22T02:23:00.3735839Z           ]
2026-06-22T02:23:00.3735914Z         }
2026-06-22T02:23:00.3735996Z       }
2026-06-22T02:23:00.3736083Z     },
2026-06-22T02:23:00.3736159Z     {
2026-06-22T02:23:00.3736292Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-22T02:23:00.3743483Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-22T02:23:00.3743807Z       "requiredStages": [
2026-06-22T02:23:00.3743892Z         "doc",
2026-06-22T02:23:00.3743978Z         "impl",
2026-06-22T02:23:00.3744059Z         "unit",
2026-06-22T02:23:00.3744131Z         "int"
2026-06-22T02:23:00.3744216Z       ],
2026-06-22T02:23:00.3744312Z       "stages": {
2026-06-22T02:23:00.3744397Z         "doc": {
2026-06-22T02:23:00.3744483Z           "complete": true,
2026-06-22T02:23:00.3744569Z           "evidence": [
2026-06-22T02:23:00.3744646Z             {
2026-06-22T02:23:00.3744755Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3744855Z               "line": 454
2026-06-22T02:23:00.3744941Z             }
2026-06-22T02:23:00.3745041Z           ]
2026-06-22T02:23:00.3745122Z         },
2026-06-22T02:23:00.3745208Z         "impl": {
2026-06-22T02:23:00.3745305Z           "complete": true,
2026-06-22T02:23:00.3745384Z           "evidence": [
2026-06-22T02:23:00.3745465Z             {
2026-06-22T02:23:00.3745581Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.3745657Z               "line": 355
2026-06-22T02:23:00.3745746Z             },
2026-06-22T02:23:00.3745823Z             {
2026-06-22T02:23:00.3745949Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3746028Z               "line": 493
2026-06-22T02:23:00.3746123Z             },
2026-06-22T02:23:00.3746198Z             {
2026-06-22T02:23:00.3746314Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3746404Z               "line": 1740
2026-06-22T02:23:00.3746489Z             },
2026-06-22T02:23:00.3746571Z             {
2026-06-22T02:23:00.3746681Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3746771Z               "line": 347
2026-06-22T02:23:00.3746852Z             }
2026-06-22T02:23:00.3746934Z           ]
2026-06-22T02:23:00.3747010Z         },
2026-06-22T02:23:00.3747090Z         "int": {
2026-06-22T02:23:00.3747176Z           "complete": true,
2026-06-22T02:23:00.3747263Z           "evidence": [
2026-06-22T02:23:00.3747343Z             {
2026-06-22T02:23:00.3747457Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.3747634Z               "line": 737
2026-06-22T02:23:00.3747711Z             },
2026-06-22T02:23:00.3747791Z             {
2026-06-22T02:23:00.3747996Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.3748077Z               "line": 854
2026-06-22T02:23:00.3748159Z             },
2026-06-22T02:23:00.3748240Z             {
2026-06-22T02:23:00.3748377Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-22T02:23:00.3748462Z               "line": 266
2026-06-22T02:23:00.3748534Z             }
2026-06-22T02:23:00.3748619Z           ]
2026-06-22T02:23:00.3748698Z         },
2026-06-22T02:23:00.3748784Z         "unit": {
2026-06-22T02:23:00.3748871Z           "complete": true,
2026-06-22T02:23:00.3749032Z           "evidence": [
2026-06-22T02:23:00.3749108Z             {
2026-06-22T02:23:00.3749205Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3749295Z               "line": 1046
2026-06-22T02:23:00.3749366Z             },
2026-06-22T02:23:00.3749458Z             {
2026-06-22T02:23:00.3749557Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.3749657Z               "line": 1080
2026-06-22T02:23:00.3749733Z             }
2026-06-22T02:23:00.3749815Z           ]
2026-06-22T02:23:00.3749895Z         }
2026-06-22T02:23:00.3749972Z       }
2026-06-22T02:23:00.3750053Z     },
2026-06-22T02:23:00.3750130Z     {
2026-06-22T02:23:00.3750244Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-22T02:23:00.3750788Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-22T02:23:00.3750873Z       "requiredStages": [
2026-06-22T02:23:00.3750959Z         "impl",
2026-06-22T02:23:00.3751031Z         "unit"
2026-06-22T02:23:00.3751108Z       ],
2026-06-22T02:23:00.3751197Z       "stages": {
2026-06-22T02:23:00.3751273Z         "doc": {
2026-06-22T02:23:00.3751373Z           "complete": false,
2026-06-22T02:23:00.3751458Z           "evidence": []
2026-06-22T02:23:00.3751546Z         },
2026-06-22T02:23:00.3751632Z         "impl": {
2026-06-22T02:23:00.3751723Z           "complete": true,
2026-06-22T02:23:00.3751810Z           "evidence": [
2026-06-22T02:23:00.3751889Z             {
2026-06-22T02:23:00.3752000Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3752086Z               "line": 759
2026-06-22T02:23:00.3752167Z             }
2026-06-22T02:23:00.3752247Z           ]
2026-06-22T02:23:00.3752325Z         },
2026-06-22T02:23:00.3752410Z         "int": {
2026-06-22T02:23:00.3752496Z           "complete": false,
2026-06-22T02:23:00.3752586Z           "evidence": []
2026-06-22T02:23:00.3752663Z         },
2026-06-22T02:23:00.3752739Z         "unit": {
2026-06-22T02:23:00.3752829Z           "complete": true,
2026-06-22T02:23:00.3752915Z           "evidence": [
2026-06-22T02:23:00.3753002Z             {
2026-06-22T02:23:00.3753124Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3753216Z               "line": 873
2026-06-22T02:23:00.3753302Z             }
2026-06-22T02:23:00.3753378Z           ]
2026-06-22T02:23:00.3753453Z         }
2026-06-22T02:23:00.3753530Z       }
2026-06-22T02:23:00.3753617Z     },
2026-06-22T02:23:00.3753693Z     {
2026-06-22T02:23:00.3753835Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-22T02:23:00.3756146Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-22T02:23:00.3756446Z       "requiredStages": [
2026-06-22T02:23:00.3756528Z         "impl",
2026-06-22T02:23:00.3756612Z         "unit",
2026-06-22T02:23:00.3756702Z         "int"
2026-06-22T02:23:00.3756787Z       ],
2026-06-22T02:23:00.3756869Z       "stages": {
2026-06-22T02:23:00.3756950Z         "doc": {
2026-06-22T02:23:00.3757035Z           "complete": false,
2026-06-22T02:23:00.3757126Z           "evidence": []
2026-06-22T02:23:00.3757203Z         },
2026-06-22T02:23:00.3757288Z         "impl": {
2026-06-22T02:23:00.3757378Z           "complete": true,
2026-06-22T02:23:00.3757466Z           "evidence": [
2026-06-22T02:23:00.3757541Z             {
2026-06-22T02:23:00.3757665Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3757755Z               "line": 705
2026-06-22T02:23:00.3757837Z             }
2026-06-22T02:23:00.3757932Z           ]
2026-06-22T02:23:00.3758012Z         },
2026-06-22T02:23:00.3758095Z         "int": {
2026-06-22T02:23:00.3758185Z           "complete": true,
2026-06-22T02:23:00.3758266Z           "evidence": [
2026-06-22T02:23:00.3758346Z             {
2026-06-22T02:23:00.3758471Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-22T02:23:00.3758556Z               "line": 24
2026-06-22T02:23:00.3758638Z             }
2026-06-22T02:23:00.3758714Z           ]
2026-06-22T02:23:00.3758796Z         },
2026-06-22T02:23:00.3758876Z         "unit": {
2026-06-22T02:23:00.3759046Z           "complete": true,
2026-06-22T02:23:00.3759127Z           "evidence": [
2026-06-22T02:23:00.3759211Z             {
2026-06-22T02:23:00.3759335Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3759421Z               "line": 918
2026-06-22T02:23:00.3759508Z             }
2026-06-22T02:23:00.3759578Z           ]
2026-06-22T02:23:00.3759654Z         }
2026-06-22T02:23:00.3759746Z       }
2026-06-22T02:23:00.3759827Z     },
2026-06-22T02:23:00.3759907Z     {
2026-06-22T02:23:00.3760018Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-22T02:23:00.3763572Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-22T02:23:00.3763694Z       "requiredStages": [
2026-06-22T02:23:00.3763771Z         "impl",
2026-06-22T02:23:00.3763858Z         "unit",
2026-06-22T02:23:00.3763943Z         "int"
2026-06-22T02:23:00.3764018Z       ],
2026-06-22T02:23:00.3764105Z       "stages": {
2026-06-22T02:23:00.3764187Z         "doc": {
2026-06-22T02:23:00.3764272Z           "complete": false,
2026-06-22T02:23:00.3764356Z           "evidence": []
2026-06-22T02:23:00.3764437Z         },
2026-06-22T02:23:00.3764518Z         "impl": {
2026-06-22T02:23:00.3764716Z           "complete": true,
2026-06-22T02:23:00.3764803Z           "evidence": [
2026-06-22T02:23:00.3765002Z             {
2026-06-22T02:23:00.3765122Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3765203Z               "line": 391
2026-06-22T02:23:00.3765284Z             },
2026-06-22T02:23:00.3765369Z             {
2026-06-22T02:23:00.3765471Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3765556Z               "line": 343
2026-06-22T02:23:00.3765636Z             },
2026-06-22T02:23:00.3765722Z             {
2026-06-22T02:23:00.3765819Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3765904Z               "line": 1750
2026-06-22T02:23:00.3765989Z             },
2026-06-22T02:23:00.3766066Z             {
2026-06-22T02:23:00.3766171Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3766252Z               "line": 3191
2026-06-22T02:23:00.3766338Z             }
2026-06-22T02:23:00.3766425Z           ]
2026-06-22T02:23:00.3766505Z         },
2026-06-22T02:23:00.3766590Z         "int": {
2026-06-22T02:23:00.3766691Z           "complete": true,
2026-06-22T02:23:00.3766778Z           "evidence": [
2026-06-22T02:23:00.3766857Z             {
2026-06-22T02:23:00.3766986Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:23:00.3767069Z               "line": 353
2026-06-22T02:23:00.3767153Z             },
2026-06-22T02:23:00.3767238Z             {
2026-06-22T02:23:00.3767371Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-22T02:23:00.3767458Z               "line": 23
2026-06-22T02:23:00.3767533Z             }
2026-06-22T02:23:00.3767619Z           ]
2026-06-22T02:23:00.3767701Z         },
2026-06-22T02:23:00.3767782Z         "unit": {
2026-06-22T02:23:00.3767872Z           "complete": true,
2026-06-22T02:23:00.3767952Z           "evidence": [
2026-06-22T02:23:00.3768035Z             {
2026-06-22T02:23:00.3768140Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3768239Z               "line": 743
2026-06-22T02:23:00.3768325Z             },
2026-06-22T02:23:00.3768401Z             {
2026-06-22T02:23:00.3768506Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3768587Z               "line": 7863
2026-06-22T02:23:00.3768675Z             }
2026-06-22T02:23:00.3768750Z           ]
2026-06-22T02:23:00.3768826Z         }
2026-06-22T02:23:00.3768906Z       }
2026-06-22T02:23:00.3769065Z     },
2026-06-22T02:23:00.3769140Z     {
2026-06-22T02:23:00.3769245Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-22T02:23:00.3772474Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-22T02:23:00.3772587Z       "requiredStages": [
2026-06-22T02:23:00.3772672Z         "impl",
2026-06-22T02:23:00.3772752Z         "unit",
2026-06-22T02:23:00.3772829Z         "int"
2026-06-22T02:23:00.3772911Z       ],
2026-06-22T02:23:00.3773100Z       "stages": {
2026-06-22T02:23:00.3773183Z         "doc": {
2026-06-22T02:23:00.3773278Z           "complete": false,
2026-06-22T02:23:00.3773455Z           "evidence": []
2026-06-22T02:23:00.3773535Z         },
2026-06-22T02:23:00.3773621Z         "impl": {
2026-06-22T02:23:00.3773711Z           "complete": true,
2026-06-22T02:23:00.3773798Z           "evidence": [
2026-06-22T02:23:00.3773869Z             {
2026-06-22T02:23:00.3773992Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3774074Z               "line": 64
2026-06-22T02:23:00.3774151Z             },
2026-06-22T02:23:00.3774235Z             {
2026-06-22T02:23:00.3774350Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3774432Z               "line": 78
2026-06-22T02:23:00.3774513Z             },
2026-06-22T02:23:00.3774593Z             {
2026-06-22T02:23:00.3774704Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3774785Z               "line": 170
2026-06-22T02:23:00.3774879Z             },
2026-06-22T02:23:00.3774964Z             {
2026-06-22T02:23:00.3775078Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3775164Z               "line": 185
2026-06-22T02:23:00.3775248Z             },
2026-06-22T02:23:00.3775328Z             {
2026-06-22T02:23:00.3775444Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3775525Z               "line": 195
2026-06-22T02:23:00.3775605Z             },
2026-06-22T02:23:00.3775692Z             {
2026-06-22T02:23:00.3775801Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3775886Z               "line": 205
2026-06-22T02:23:00.3775967Z             },
2026-06-22T02:23:00.3776055Z             {
2026-06-22T02:23:00.3776174Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3776258Z               "line": 294
2026-06-22T02:23:00.3776345Z             },
2026-06-22T02:23:00.3776421Z             {
2026-06-22T02:23:00.3776544Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3776621Z               "line": 308
2026-06-22T02:23:00.3776713Z             },
2026-06-22T02:23:00.3776798Z             {
2026-06-22T02:23:00.3776912Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3776999Z               "line": 377
2026-06-22T02:23:00.3777079Z             },
2026-06-22T02:23:00.3777160Z             {
2026-06-22T02:23:00.3777266Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3777357Z               "line": 437
2026-06-22T02:23:00.3777441Z             },
2026-06-22T02:23:00.3777513Z             {
2026-06-22T02:23:00.3777629Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3777709Z               "line": 455
2026-06-22T02:23:00.3777788Z             }
2026-06-22T02:23:00.3777878Z           ]
2026-06-22T02:23:00.3777960Z         },
2026-06-22T02:23:00.3778043Z         "int": {
2026-06-22T02:23:00.3778136Z           "complete": true,
2026-06-22T02:23:00.3778217Z           "evidence": [
2026-06-22T02:23:00.3778300Z             {
2026-06-22T02:23:00.3778441Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:23:00.3778522Z               "line": 45
2026-06-22T02:23:00.3778605Z             },
2026-06-22T02:23:00.3778685Z             {
2026-06-22T02:23:00.3778818Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:23:00.3778895Z               "line": 354
2026-06-22T02:23:00.3779066Z             },
2026-06-22T02:23:00.3779143Z             {
2026-06-22T02:23:00.3779286Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T02:23:00.3779372Z               "line": 31
2026-06-22T02:23:00.3779457Z             }
2026-06-22T02:23:00.3779540Z           ]
2026-06-22T02:23:00.3779620Z         },
2026-06-22T02:23:00.3779695Z         "unit": {
2026-06-22T02:23:00.3779786Z           "complete": true,
2026-06-22T02:23:00.3779883Z           "evidence": [
2026-06-22T02:23:00.3780090Z             {
2026-06-22T02:23:00.3780210Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.3780379Z               "line": 727
2026-06-22T02:23:00.3780460Z             }
2026-06-22T02:23:00.3780537Z           ]
2026-06-22T02:23:00.3780623Z         }
2026-06-22T02:23:00.3780698Z       }
2026-06-22T02:23:00.3780775Z     },
2026-06-22T02:23:00.3780861Z     {
2026-06-22T02:23:00.3780970Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-22T02:23:00.3781171Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-22T02:23:00.3781262Z       "requiredStages": [
2026-06-22T02:23:00.3781337Z         "impl",
2026-06-22T02:23:00.3781419Z         "unit"
2026-06-22T02:23:00.3781491Z       ],
2026-06-22T02:23:00.3781581Z       "stages": {
2026-06-22T02:23:00.3781657Z         "doc": {
2026-06-22T02:23:00.3781748Z           "complete": false,
2026-06-22T02:23:00.3781824Z           "evidence": []
2026-06-22T02:23:00.3781915Z         },
2026-06-22T02:23:00.3781996Z         "impl": {
2026-06-22T02:23:00.3782077Z           "complete": true,
2026-06-22T02:23:00.3782172Z           "evidence": [
2026-06-22T02:23:00.3782257Z             {
2026-06-22T02:23:00.3782358Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:23:00.3782445Z               "line": 14
2026-06-22T02:23:00.3782529Z             },
2026-06-22T02:23:00.3782620Z             {
2026-06-22T02:23:00.3782726Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.3782816Z               "line": 566
2026-06-22T02:23:00.3782892Z             }
2026-06-22T02:23:00.3782976Z           ]
2026-06-22T02:23:00.3783048Z         },
2026-06-22T02:23:00.3783133Z         "int": {
2026-06-22T02:23:00.3783223Z           "complete": false,
2026-06-22T02:23:00.3783308Z           "evidence": []
2026-06-22T02:23:00.3783395Z         },
2026-06-22T02:23:00.3783476Z         "unit": {
2026-06-22T02:23:00.3783570Z           "complete": true,
2026-06-22T02:23:00.3783661Z           "evidence": [
2026-06-22T02:23:00.3783743Z             {
2026-06-22T02:23:00.3783852Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:23:00.3783942Z               "line": 130
2026-06-22T02:23:00.3784024Z             },
2026-06-22T02:23:00.3784100Z             {
2026-06-22T02:23:00.3784209Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:23:00.3784286Z               "line": 138
2026-06-22T02:23:00.3784367Z             },
2026-06-22T02:23:00.3784448Z             {
2026-06-22T02:23:00.3784552Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:23:00.3784644Z               "line": 146
2026-06-22T02:23:00.3784725Z             },
2026-06-22T02:23:00.3784805Z             {
2026-06-22T02:23:00.3784905Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:23:00.3785002Z               "line": 154
2026-06-22T02:23:00.3785082Z             },
2026-06-22T02:23:00.3785168Z             {
2026-06-22T02:23:00.3785269Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:23:00.3785355Z               "line": 162
2026-06-22T02:23:00.3785439Z             },
2026-06-22T02:23:00.3785515Z             {
2026-06-22T02:23:00.3785615Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:23:00.3785705Z               "line": 170
2026-06-22T02:23:00.3785785Z             }
2026-06-22T02:23:00.3785865Z           ]
2026-06-22T02:23:00.3785947Z         }
2026-06-22T02:23:00.3786033Z       }
2026-06-22T02:23:00.3786113Z     },
2026-06-22T02:23:00.3786194Z     {
2026-06-22T02:23:00.3786300Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-22T02:23:00.3787158Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-22T02:23:00.3787254Z       "requiredStages": [
2026-06-22T02:23:00.3787410Z         "impl",
2026-06-22T02:23:00.3787487Z         "unit"
2026-06-22T02:23:00.3787564Z       ],
2026-06-22T02:23:00.3787649Z       "stages": {
2026-06-22T02:23:00.3787821Z         "doc": {
2026-06-22T02:23:00.3787903Z           "complete": false,
2026-06-22T02:23:00.3787987Z           "evidence": []
2026-06-22T02:23:00.3788068Z         },
2026-06-22T02:23:00.3788146Z         "impl": {
2026-06-22T02:23:00.3788246Z           "complete": true,
2026-06-22T02:23:00.3788325Z           "evidence": [
2026-06-22T02:23:00.3788406Z             {
2026-06-22T02:23:00.3788545Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3788631Z               "line": 34
2026-06-22T02:23:00.3788711Z             }
2026-06-22T02:23:00.3788782Z           ]
2026-06-22T02:23:00.3788865Z         },
2026-06-22T02:23:00.3788941Z         "int": {
2026-06-22T02:23:00.3789117Z           "complete": false,
2026-06-22T02:23:00.3789198Z           "evidence": []
2026-06-22T02:23:00.3789279Z         },
2026-06-22T02:23:00.3789378Z         "unit": {
2026-06-22T02:23:00.3789460Z           "complete": true,
2026-06-22T02:23:00.3789546Z           "evidence": [
2026-06-22T02:23:00.3789631Z             {
2026-06-22T02:23:00.3789770Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3789856Z               "line": 188
2026-06-22T02:23:00.3789937Z             },
2026-06-22T02:23:00.3790017Z             {
2026-06-22T02:23:00.3790152Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3790241Z               "line": 200
2026-06-22T02:23:00.3790313Z             },
2026-06-22T02:23:00.3790395Z             {
2026-06-22T02:23:00.3790523Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3790613Z               "line": 211
2026-06-22T02:23:00.3790693Z             },
2026-06-22T02:23:00.3790775Z             {
2026-06-22T02:23:00.3790911Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3791005Z               "line": 253
2026-06-22T02:23:00.3791087Z             },
2026-06-22T02:23:00.3791169Z             {
2026-06-22T02:23:00.3791306Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3791392Z               "line": 277
2026-06-22T02:23:00.3791478Z             },
2026-06-22T02:23:00.3791563Z             {
2026-06-22T02:23:00.3791693Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3791774Z               "line": 300
2026-06-22T02:23:00.3791845Z             },
2026-06-22T02:23:00.3791936Z             {
2026-06-22T02:23:00.3792061Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:23:00.3792151Z               "line": 316
2026-06-22T02:23:00.3792236Z             }
2026-06-22T02:23:00.3792318Z           ]
2026-06-22T02:23:00.3792399Z         }
2026-06-22T02:23:00.3792480Z       }
2026-06-22T02:23:00.3792565Z     },
2026-06-22T02:23:00.3792647Z     {
2026-06-22T02:23:00.3792756Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-22T02:23:00.3793276Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-22T02:23:00.3793372Z       "requiredStages": [
2026-06-22T02:23:00.3793452Z         "impl",
2026-06-22T02:23:00.3793527Z         "unit"
2026-06-22T02:23:00.3793608Z       ],
2026-06-22T02:23:00.3793698Z       "stages": {
2026-06-22T02:23:00.3793783Z         "doc": {
2026-06-22T02:23:00.3793877Z           "complete": false,
2026-06-22T02:23:00.3793959Z           "evidence": []
2026-06-22T02:23:00.3794041Z         },
2026-06-22T02:23:00.3794126Z         "impl": {
2026-06-22T02:23:00.3794211Z           "complete": true,
2026-06-22T02:23:00.3794303Z           "evidence": [
2026-06-22T02:23:00.3794379Z             {
2026-06-22T02:23:00.3794502Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3794684Z               "line": 29
2026-06-22T02:23:00.3794769Z             },
2026-06-22T02:23:00.3794851Z             {
2026-06-22T02:23:00.3795099Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3795189Z               "line": 174
2026-06-22T02:23:00.3795257Z             },
2026-06-22T02:23:00.3795332Z             {
2026-06-22T02:23:00.3795442Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3795529Z               "line": 194
2026-06-22T02:23:00.3795610Z             },
2026-06-22T02:23:00.3795694Z             {
2026-06-22T02:23:00.3795810Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3795896Z               "line": 222
2026-06-22T02:23:00.3795985Z             }
2026-06-22T02:23:00.3796065Z           ]
2026-06-22T02:23:00.3796151Z         },
2026-06-22T02:23:00.3796232Z         "int": {
2026-06-22T02:23:00.3796321Z           "complete": false,
2026-06-22T02:23:00.3796406Z           "evidence": []
2026-06-22T02:23:00.3796497Z         },
2026-06-22T02:23:00.3796574Z         "unit": {
2026-06-22T02:23:00.3796664Z           "complete": true,
2026-06-22T02:23:00.3796754Z           "evidence": [
2026-06-22T02:23:00.3796831Z             {
2026-06-22T02:23:00.3796946Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3797030Z               "line": 329
2026-06-22T02:23:00.3797107Z             },
2026-06-22T02:23:00.3797189Z             {
2026-06-22T02:23:00.3797289Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3797383Z               "line": 344
2026-06-22T02:23:00.3797461Z             },
2026-06-22T02:23:00.3797547Z             {
2026-06-22T02:23:00.3797656Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3797737Z               "line": 417
2026-06-22T02:23:00.3797819Z             },
2026-06-22T02:23:00.3797899Z             {
2026-06-22T02:23:00.3798003Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3798081Z               "line": 433
2026-06-22T02:23:00.3798171Z             },
2026-06-22T02:23:00.3798246Z             {
2026-06-22T02:23:00.3798352Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3798434Z               "line": 492
2026-06-22T02:23:00.3798514Z             },
2026-06-22T02:23:00.3798595Z             {
2026-06-22T02:23:00.3798701Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3798787Z               "line": 506
2026-06-22T02:23:00.3798871Z             },
2026-06-22T02:23:00.3799037Z             {
2026-06-22T02:23:00.3799158Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3799242Z               "line": 517
2026-06-22T02:23:00.3799328Z             },
2026-06-22T02:23:00.3799410Z             {
2026-06-22T02:23:00.3799506Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.3799590Z               "line": 528
2026-06-22T02:23:00.3799672Z             }
2026-06-22T02:23:00.3799759Z           ]
2026-06-22T02:23:00.3799835Z         }
2026-06-22T02:23:00.3799919Z       }
2026-06-22T02:23:00.3800001Z     },
2026-06-22T02:23:00.3800078Z     {
2026-06-22T02:23:00.3800210Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-22T02:23:00.3800849Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-22T02:23:00.3800935Z       "requiredStages": [
2026-06-22T02:23:00.3801023Z         "impl",
2026-06-22T02:23:00.3801106Z         "unit"
2026-06-22T02:23:00.3801187Z       ],
2026-06-22T02:23:00.3801273Z       "stages": {
2026-06-22T02:23:00.3801349Z         "doc": {
2026-06-22T02:23:00.3801438Z           "complete": false,
2026-06-22T02:23:00.3801523Z           "evidence": []
2026-06-22T02:23:00.3801604Z         },
2026-06-22T02:23:00.3801686Z         "impl": {
2026-06-22T02:23:00.3801771Z           "complete": true,
2026-06-22T02:23:00.3801852Z           "evidence": [
2026-06-22T02:23:00.3802048Z             {
2026-06-22T02:23:00.3802181Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3802363Z               "line": 27
2026-06-22T02:23:00.3802443Z             },
2026-06-22T02:23:00.3802524Z             {
2026-06-22T02:23:00.3802653Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3802735Z               "line": 110
2026-06-22T02:23:00.3802820Z             },
2026-06-22T02:23:00.3802902Z             {
2026-06-22T02:23:00.3803025Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3803111Z               "line": 153
2026-06-22T02:23:00.3803193Z             },
2026-06-22T02:23:00.3803279Z             {
2026-06-22T02:23:00.3803397Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3803478Z               "line": 182
2026-06-22T02:23:00.3803556Z             },
2026-06-22T02:23:00.3803635Z             {
2026-06-22T02:23:00.3806322Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3806433Z               "line": 31
2026-06-22T02:23:00.3806536Z             },
2026-06-22T02:23:00.3806607Z             {
2026-06-22T02:23:00.3806773Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3806867Z               "line": 113
2026-06-22T02:23:00.3806956Z             },
2026-06-22T02:23:00.3807038Z             {
2026-06-22T02:23:00.3807187Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3807271Z               "line": 138
2026-06-22T02:23:00.3807352Z             }
2026-06-22T02:23:00.3807430Z           ]
2026-06-22T02:23:00.3807516Z         },
2026-06-22T02:23:00.3807600Z         "int": {
2026-06-22T02:23:00.3807697Z           "complete": false,
2026-06-22T02:23:00.3807778Z           "evidence": []
2026-06-22T02:23:00.3807859Z         },
2026-06-22T02:23:00.3807938Z         "unit": {
2026-06-22T02:23:00.3808026Z           "complete": true,
2026-06-22T02:23:00.3808116Z           "evidence": [
2026-06-22T02:23:00.3808202Z             {
2026-06-22T02:23:00.3808346Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3808421Z               "line": 261
2026-06-22T02:23:00.3808502Z             },
2026-06-22T02:23:00.3808583Z             {
2026-06-22T02:23:00.3808713Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3808788Z               "line": 276
2026-06-22T02:23:00.3808869Z             },
2026-06-22T02:23:00.3809032Z             {
2026-06-22T02:23:00.3809150Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3809237Z               "line": 293
2026-06-22T02:23:00.3809319Z             },
2026-06-22T02:23:00.3809408Z             {
2026-06-22T02:23:00.3809530Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3809607Z               "line": 310
2026-06-22T02:23:00.3809689Z             },
2026-06-22T02:23:00.3809774Z             {
2026-06-22T02:23:00.3809893Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3809980Z               "line": 327
2026-06-22T02:23:00.3810061Z             },
2026-06-22T02:23:00.3810131Z             {
2026-06-22T02:23:00.3810242Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.3810319Z               "line": 366
2026-06-22T02:23:00.3810404Z             },
2026-06-22T02:23:00.3810489Z             {
2026-06-22T02:23:00.3810624Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3810718Z               "line": 179
2026-06-22T02:23:00.3810794Z             },
2026-06-22T02:23:00.3810881Z             {
2026-06-22T02:23:00.3811018Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3811099Z               "line": 194
2026-06-22T02:23:00.3811181Z             },
2026-06-22T02:23:00.3811263Z             {
2026-06-22T02:23:00.3811395Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3811634Z               "line": 204
2026-06-22T02:23:00.3811804Z             },
2026-06-22T02:23:00.3811880Z             {
2026-06-22T02:23:00.3812012Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3812102Z               "line": 259
2026-06-22T02:23:00.3812179Z             },
2026-06-22T02:23:00.3812260Z             {
2026-06-22T02:23:00.3812398Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3812479Z               "line": 269
2026-06-22T02:23:00.3812561Z             },
2026-06-22T02:23:00.3812642Z             {
2026-06-22T02:23:00.3812765Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.3812847Z               "line": 283
2026-06-22T02:23:00.3812927Z             }
2026-06-22T02:23:00.3813012Z           ]
2026-06-22T02:23:00.3813094Z         }
2026-06-22T02:23:00.3813176Z       }
2026-06-22T02:23:00.3813266Z     },
2026-06-22T02:23:00.3813346Z     {
2026-06-22T02:23:00.3813452Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-22T02:23:00.3813642Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-22T02:23:00.3813728Z       "requiredStages": [],
2026-06-22T02:23:00.3813815Z       "stages": {
2026-06-22T02:23:00.3813900Z         "doc": {
2026-06-22T02:23:00.3813981Z           "complete": false,
2026-06-22T02:23:00.3814068Z           "evidence": []
2026-06-22T02:23:00.3814149Z         },
2026-06-22T02:23:00.3814243Z         "impl": {
2026-06-22T02:23:00.3814334Z           "complete": false,
2026-06-22T02:23:00.3814416Z           "evidence": []
2026-06-22T02:23:00.3814488Z         },
2026-06-22T02:23:00.3814557Z         "int": {
2026-06-22T02:23:00.3814652Z           "complete": false,
2026-06-22T02:23:00.3814728Z           "evidence": []
2026-06-22T02:23:00.3814814Z         },
2026-06-22T02:23:00.3814888Z         "unit": {
2026-06-22T02:23:00.3814974Z           "complete": false,
2026-06-22T02:23:00.3815060Z           "evidence": []
2026-06-22T02:23:00.3815142Z         }
2026-06-22T02:23:00.3815232Z       }
2026-06-22T02:23:00.3815312Z     },
2026-06-22T02:23:00.3815395Z     {
2026-06-22T02:23:00.3815518Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-22T02:23:00.3816344Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-22T02:23:00.3816443Z       "requiredStages": [
2026-06-22T02:23:00.3816524Z         "impl",
2026-06-22T02:23:00.3816610Z         "unit"
2026-06-22T02:23:00.3816692Z       ],
2026-06-22T02:23:00.3816776Z       "stages": {
2026-06-22T02:23:00.3816848Z         "doc": {
2026-06-22T02:23:00.3816925Z           "complete": false,
2026-06-22T02:23:00.3817017Z           "evidence": []
2026-06-22T02:23:00.3817096Z         },
2026-06-22T02:23:00.3817186Z         "impl": {
2026-06-22T02:23:00.3817271Z           "complete": true,
2026-06-22T02:23:00.3817357Z           "evidence": [
2026-06-22T02:23:00.3817446Z             {
2026-06-22T02:23:00.3817569Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3817651Z               "line": 26
2026-06-22T02:23:00.3817737Z             },
2026-06-22T02:23:00.3817822Z             {
2026-06-22T02:23:00.3817947Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3818028Z               "line": 95
2026-06-22T02:23:00.3818104Z             },
2026-06-22T02:23:00.3818175Z             {
2026-06-22T02:23:00.3818290Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3818376Z               "line": 166
2026-06-22T02:23:00.3818461Z             },
2026-06-22T02:23:00.3818547Z             {
2026-06-22T02:23:00.3818667Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3818752Z               "line": 19
2026-06-22T02:23:00.3818906Z             },
2026-06-22T02:23:00.3819048Z             {
2026-06-22T02:23:00.3819148Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3819329Z               "line": 50
2026-06-22T02:23:00.3819415Z             },
2026-06-22T02:23:00.3819492Z             {
2026-06-22T02:23:00.3819602Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:23:00.3819686Z               "line": 18
2026-06-22T02:23:00.3819768Z             },
2026-06-22T02:23:00.3819845Z             {
2026-06-22T02:23:00.3819949Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:23:00.3820034Z               "line": 71
2026-06-22T02:23:00.3820105Z             },
2026-06-22T02:23:00.3820187Z             {
2026-06-22T02:23:00.3820297Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.3820382Z               "line": 87
2026-06-22T02:23:00.3820467Z             }
2026-06-22T02:23:00.3820540Z           ]
2026-06-22T02:23:00.3820626Z         },
2026-06-22T02:23:00.3820701Z         "int": {
2026-06-22T02:23:00.3820797Z           "complete": false,
2026-06-22T02:23:00.3820883Z           "evidence": []
2026-06-22T02:23:00.3820969Z         },
2026-06-22T02:23:00.3821049Z         "unit": {
2026-06-22T02:23:00.3821141Z           "complete": true,
2026-06-22T02:23:00.3821226Z           "evidence": [
2026-06-22T02:23:00.3821307Z             {
2026-06-22T02:23:00.3821426Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3821508Z               "line": 289
2026-06-22T02:23:00.3821588Z             },
2026-06-22T02:23:00.3821674Z             {
2026-06-22T02:23:00.3821790Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3821870Z               "line": 314
2026-06-22T02:23:00.3821945Z             },
2026-06-22T02:23:00.3822027Z             {
2026-06-22T02:23:00.3822133Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3822217Z               "line": 350
2026-06-22T02:23:00.3822302Z             },
2026-06-22T02:23:00.3822383Z             {
2026-06-22T02:23:00.3822493Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3822582Z               "line": 418
2026-06-22T02:23:00.3822662Z             },
2026-06-22T02:23:00.3822739Z             {
2026-06-22T02:23:00.3822855Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3822943Z               "line": 429
2026-06-22T02:23:00.3823025Z             },
2026-06-22T02:23:00.3823107Z             {
2026-06-22T02:23:00.3823216Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3823296Z               "line": 460
2026-06-22T02:23:00.3823378Z             },
2026-06-22T02:23:00.3823459Z             {
2026-06-22T02:23:00.3823564Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.3823649Z               "line": 471
2026-06-22T02:23:00.3823731Z             },
2026-06-22T02:23:00.3823802Z             {
2026-06-22T02:23:00.3823921Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3824003Z               "line": 77
2026-06-22T02:23:00.3824084Z             },
2026-06-22T02:23:00.3824170Z             {
2026-06-22T02:23:00.3824269Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3824356Z               "line": 97
2026-06-22T02:23:00.3824437Z             },
2026-06-22T02:23:00.3824518Z             {
2026-06-22T02:23:00.3824623Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3824704Z               "line": 112
2026-06-22T02:23:00.3824789Z             },
2026-06-22T02:23:00.3824865Z             {
2026-06-22T02:23:00.3824981Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3825057Z               "line": 123
2026-06-22T02:23:00.3825136Z             },
2026-06-22T02:23:00.3825217Z             {
2026-06-22T02:23:00.3825327Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3825407Z               "line": 130
2026-06-22T02:23:00.3825597Z             },
2026-06-22T02:23:00.3825673Z             {
2026-06-22T02:23:00.3825782Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:23:00.3825945Z               "line": 145
2026-06-22T02:23:00.3826035Z             },
2026-06-22T02:23:00.3826111Z             {
2026-06-22T02:23:00.3826221Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:23:00.3826303Z               "line": 115
2026-06-22T02:23:00.3826384Z             },
2026-06-22T02:23:00.3826464Z             {
2026-06-22T02:23:00.3826570Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:23:00.3826655Z               "line": 130
2026-06-22T02:23:00.3826732Z             },
2026-06-22T02:23:00.3826817Z             {
2026-06-22T02:23:00.3826923Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.3827003Z               "line": 428
2026-06-22T02:23:00.3827079Z             }
2026-06-22T02:23:00.3827160Z           ]
2026-06-22T02:23:00.3827247Z         }
2026-06-22T02:23:00.3827332Z       }
2026-06-22T02:23:00.3827413Z     },
2026-06-22T02:23:00.3827495Z     {
2026-06-22T02:23:00.3827619Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-22T02:23:00.3833776Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-22T02:23:00.3833909Z       "requiredStages": [
2026-06-22T02:23:00.3833991Z         "impl",
2026-06-22T02:23:00.3834072Z         "unit",
2026-06-22T02:23:00.3834156Z         "int"
2026-06-22T02:23:00.3834239Z       ],
2026-06-22T02:23:00.3834325Z       "stages": {
2026-06-22T02:23:00.3834396Z         "doc": {
2026-06-22T02:23:00.3834490Z           "complete": false,
2026-06-22T02:23:00.3834583Z           "evidence": []
2026-06-22T02:23:00.3834658Z         },
2026-06-22T02:23:00.3834739Z         "impl": {
2026-06-22T02:23:00.3834829Z           "complete": true,
2026-06-22T02:23:00.3834911Z           "evidence": [
2026-06-22T02:23:00.3834992Z             {
2026-06-22T02:23:00.3835101Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3835298Z               "line": 944
2026-06-22T02:23:00.3835377Z             },
2026-06-22T02:23:00.3835560Z             {
2026-06-22T02:23:00.3835664Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.3835754Z               "line": 322
2026-06-22T02:23:00.3835835Z             }
2026-06-22T02:23:00.3835920Z           ]
2026-06-22T02:23:00.3836004Z         },
2026-06-22T02:23:00.3836085Z         "int": {
2026-06-22T02:23:00.3836176Z           "complete": true,
2026-06-22T02:23:00.3836257Z           "evidence": [
2026-06-22T02:23:00.3836347Z             {
2026-06-22T02:23:00.3836491Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.3836577Z               "line": 2035
2026-06-22T02:23:00.3836662Z             }
2026-06-22T02:23:00.3836738Z           ]
2026-06-22T02:23:00.3836820Z         },
2026-06-22T02:23:00.3836887Z         "unit": {
2026-06-22T02:23:00.3836973Z           "complete": true,
2026-06-22T02:23:00.3837057Z           "evidence": [
2026-06-22T02:23:00.3837139Z             {
2026-06-22T02:23:00.3837258Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3837353Z               "line": 2625
2026-06-22T02:23:00.3837435Z             },
2026-06-22T02:23:00.3837512Z             {
2026-06-22T02:23:00.3837620Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3837706Z               "line": 2689
2026-06-22T02:23:00.3837783Z             },
2026-06-22T02:23:00.3837869Z             {
2026-06-22T02:23:00.3837978Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3838065Z               "line": 2744
2026-06-22T02:23:00.3838142Z             }
2026-06-22T02:23:00.3838212Z           ]
2026-06-22T02:23:00.3838287Z         }
2026-06-22T02:23:00.3838367Z       }
2026-06-22T02:23:00.3838439Z     },
2026-06-22T02:23:00.3838515Z     {
2026-06-22T02:23:00.3838618Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-22T02:23:00.3839506Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-22T02:23:00.3839615Z       "requiredStages": [
2026-06-22T02:23:00.3839702Z         "doc",
2026-06-22T02:23:00.3839782Z         "impl",
2026-06-22T02:23:00.3839863Z         "unit"
2026-06-22T02:23:00.3839949Z       ],
2026-06-22T02:23:00.3840031Z       "stages": {
2026-06-22T02:23:00.3840111Z         "doc": {
2026-06-22T02:23:00.3840206Z           "complete": true,
2026-06-22T02:23:00.3840292Z           "evidence": [
2026-06-22T02:23:00.3840374Z             {
2026-06-22T02:23:00.3840477Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3840559Z               "line": 374
2026-06-22T02:23:00.3840636Z             }
2026-06-22T02:23:00.3840713Z           ]
2026-06-22T02:23:00.3840797Z         },
2026-06-22T02:23:00.3840883Z         "impl": {
2026-06-22T02:23:00.3840985Z           "complete": true,
2026-06-22T02:23:00.3841074Z           "evidence": [
2026-06-22T02:23:00.3841154Z             {
2026-06-22T02:23:00.3841269Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3841350Z               "line": 206
2026-06-22T02:23:00.3841431Z             },
2026-06-22T02:23:00.3841502Z             {
2026-06-22T02:23:00.3841612Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3841694Z               "line": 310
2026-06-22T02:23:00.3841774Z             },
2026-06-22T02:23:00.3841845Z             {
2026-06-22T02:23:00.3841952Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3842037Z               "line": 568
2026-06-22T02:23:00.3842112Z             },
2026-06-22T02:23:00.3842193Z             {
2026-06-22T02:23:00.3842308Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3842384Z               "line": 583
2026-06-22T02:23:00.3842465Z             },
2026-06-22T02:23:00.3842647Z             {
2026-06-22T02:23:00.3842747Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3842934Z               "line": 1318
2026-06-22T02:23:00.3843014Z             },
2026-06-22T02:23:00.3843099Z             {
2026-06-22T02:23:00.3843205Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3843286Z               "line": 443
2026-06-22T02:23:00.3843366Z             },
2026-06-22T02:23:00.3843446Z             {
2026-06-22T02:23:00.3843561Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3843646Z               "line": 590
2026-06-22T02:23:00.3843721Z             },
2026-06-22T02:23:00.3843801Z             {
2026-06-22T02:23:00.3843917Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3844002Z               "line": 731
2026-06-22T02:23:00.3844078Z             }
2026-06-22T02:23:00.3844164Z           ]
2026-06-22T02:23:00.3844246Z         },
2026-06-22T02:23:00.3844346Z         "int": {
2026-06-22T02:23:00.3844435Z           "complete": false,
2026-06-22T02:23:00.3844527Z           "evidence": []
2026-06-22T02:23:00.3844608Z         },
2026-06-22T02:23:00.3844693Z         "unit": {
2026-06-22T02:23:00.3844779Z           "complete": true,
2026-06-22T02:23:00.3844861Z           "evidence": [
2026-06-22T02:23:00.3844946Z             {
2026-06-22T02:23:00.3845060Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.3845148Z               "line": 1155
2026-06-22T02:23:00.3845223Z             },
2026-06-22T02:23:00.3845313Z             {
2026-06-22T02:23:00.3845443Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-22T02:23:00.3845524Z               "line": 30
2026-06-22T02:23:00.3845609Z             }
2026-06-22T02:23:00.3845694Z           ]
2026-06-22T02:23:00.3845768Z         }
2026-06-22T02:23:00.3845848Z       }
2026-06-22T02:23:00.3845928Z     },
2026-06-22T02:23:00.3846014Z     {
2026-06-22T02:23:00.3846116Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-22T02:23:00.3849464Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-22T02:23:00.3849574Z       "requiredStages": [
2026-06-22T02:23:00.3849656Z         "impl",
2026-06-22T02:23:00.3849737Z         "unit",
2026-06-22T02:23:00.3849817Z         "int"
2026-06-22T02:23:00.3849888Z       ],
2026-06-22T02:23:00.3849971Z       "stages": {
2026-06-22T02:23:00.3850042Z         "doc": {
2026-06-22T02:23:00.3850131Z           "complete": false,
2026-06-22T02:23:00.3850213Z           "evidence": []
2026-06-22T02:23:00.3850281Z         },
2026-06-22T02:23:00.3850365Z         "impl": {
2026-06-22T02:23:00.3850442Z           "complete": true,
2026-06-22T02:23:00.3850532Z           "evidence": [
2026-06-22T02:23:00.3850615Z             {
2026-06-22T02:23:00.3850724Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3850814Z               "line": 718
2026-06-22T02:23:00.3850896Z             },
2026-06-22T02:23:00.3850977Z             {
2026-06-22T02:23:00.3851177Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3851269Z               "line": 887
2026-06-22T02:23:00.3851443Z             }
2026-06-22T02:23:00.3851526Z           ]
2026-06-22T02:23:00.3851607Z         },
2026-06-22T02:23:00.3851690Z         "int": {
2026-06-22T02:23:00.3851780Z           "complete": true,
2026-06-22T02:23:00.3851862Z           "evidence": [
2026-06-22T02:23:00.3851949Z             {
2026-06-22T02:23:00.3852067Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.3852138Z               "line": 420
2026-06-22T02:23:00.3852225Z             }
2026-06-22T02:23:00.3852301Z           ]
2026-06-22T02:23:00.3852381Z         },
2026-06-22T02:23:00.3852468Z         "unit": {
2026-06-22T02:23:00.3852549Z           "complete": true,
2026-06-22T02:23:00.3852635Z           "evidence": [
2026-06-22T02:23:00.3852720Z             {
2026-06-22T02:23:00.3852826Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3852902Z               "line": 1072
2026-06-22T02:23:00.3852997Z             },
2026-06-22T02:23:00.3853073Z             {
2026-06-22T02:23:00.3853175Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3853264Z               "line": 1096
2026-06-22T02:23:00.3853345Z             }
2026-06-22T02:23:00.3853432Z           ]
2026-06-22T02:23:00.3853513Z         }
2026-06-22T02:23:00.3853597Z       }
2026-06-22T02:23:00.3853674Z     },
2026-06-22T02:23:00.3853746Z     {
2026-06-22T02:23:00.3853851Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-22T02:23:00.3857463Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-22T02:23:00.3857582Z       "requiredStages": [
2026-06-22T02:23:00.3857664Z         "impl",
2026-06-22T02:23:00.3857745Z         "unit",
2026-06-22T02:23:00.3857834Z         "int"
2026-06-22T02:23:00.3857911Z       ],
2026-06-22T02:23:00.3858002Z       "stages": {
2026-06-22T02:23:00.3858083Z         "doc": {
2026-06-22T02:23:00.3858168Z           "complete": false,
2026-06-22T02:23:00.3858255Z           "evidence": []
2026-06-22T02:23:00.3858336Z         },
2026-06-22T02:23:00.3858417Z         "impl": {
2026-06-22T02:23:00.3858512Z           "complete": true,
2026-06-22T02:23:00.3858603Z           "evidence": [
2026-06-22T02:23:00.3858684Z             {
2026-06-22T02:23:00.3858788Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3858875Z               "line": 1417
2026-06-22T02:23:00.3859013Z             },
2026-06-22T02:23:00.3859084Z             {
2026-06-22T02:23:00.3859185Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3859276Z               "line": 1441
2026-06-22T02:23:00.3859351Z             }
2026-06-22T02:23:00.3859541Z           ]
2026-06-22T02:23:00.3859612Z         },
2026-06-22T02:23:00.3859687Z         "int": {
2026-06-22T02:23:00.3859858Z           "complete": true,
2026-06-22T02:23:00.3859949Z           "evidence": [
2026-06-22T02:23:00.3860034Z             {
2026-06-22T02:23:00.3860158Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T02:23:00.3860250Z               "line": 329
2026-06-22T02:23:00.3860326Z             }
2026-06-22T02:23:00.3860406Z           ]
2026-06-22T02:23:00.3860488Z         },
2026-06-22T02:23:00.3860574Z         "unit": {
2026-06-22T02:23:00.3860664Z           "complete": true,
2026-06-22T02:23:00.3860749Z           "evidence": [
2026-06-22T02:23:00.3860826Z             {
2026-06-22T02:23:00.3860926Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3861007Z               "line": 8169
2026-06-22T02:23:00.3861088Z             }
2026-06-22T02:23:00.3861175Z           ]
2026-06-22T02:23:00.3861255Z         }
2026-06-22T02:23:00.3861345Z       }
2026-06-22T02:23:00.3861422Z     },
2026-06-22T02:23:00.3861504Z     {
2026-06-22T02:23:00.3861607Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-22T02:23:00.3865414Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-22T02:23:00.3865532Z       "requiredStages": [
2026-06-22T02:23:00.3865604Z         "impl",
2026-06-22T02:23:00.3865690Z         "unit"
2026-06-22T02:23:00.3865761Z       ],
2026-06-22T02:23:00.3865852Z       "stages": {
2026-06-22T02:23:00.3865929Z         "doc": {
2026-06-22T02:23:00.3866033Z           "complete": false,
2026-06-22T02:23:00.3866114Z           "evidence": []
2026-06-22T02:23:00.3866195Z         },
2026-06-22T02:23:00.3866277Z         "impl": {
2026-06-22T02:23:00.3866376Z           "complete": true,
2026-06-22T02:23:00.3866467Z           "evidence": [
2026-06-22T02:23:00.3866544Z             {
2026-06-22T02:23:00.3866663Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3866748Z               "line": 910
2026-06-22T02:23:00.3866829Z             }
2026-06-22T02:23:00.3866917Z           ]
2026-06-22T02:23:00.3866996Z         },
2026-06-22T02:23:00.3867082Z         "int": {
2026-06-22T02:23:00.3867174Z           "complete": false,
2026-06-22T02:23:00.3867264Z           "evidence": []
2026-06-22T02:23:00.3867349Z         },
2026-06-22T02:23:00.3867424Z         "unit": {
2026-06-22T02:23:00.3867519Z           "complete": true,
2026-06-22T02:23:00.3867600Z           "evidence": [
2026-06-22T02:23:00.3867680Z             {
2026-06-22T02:23:00.3867779Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3867866Z               "line": 1112
2026-06-22T02:23:00.3867952Z             }
2026-06-22T02:23:00.3868028Z           ]
2026-06-22T02:23:00.3868191Z         }
2026-06-22T02:23:00.3868276Z       }
2026-06-22T02:23:00.3868361Z     },
2026-06-22T02:23:00.3868437Z     {
2026-06-22T02:23:00.3868639Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-22T02:23:00.3873187Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T02:23:00.3873297Z       "requiredStages": [
2026-06-22T02:23:00.3873388Z         "impl",
2026-06-22T02:23:00.3873469Z         "unit"
2026-06-22T02:23:00.3873554Z       ],
2026-06-22T02:23:00.3873636Z       "stages": {
2026-06-22T02:23:00.3873721Z         "doc": {
2026-06-22T02:23:00.3873826Z           "complete": false,
2026-06-22T02:23:00.3873907Z           "evidence": []
2026-06-22T02:23:00.3873999Z         },
2026-06-22T02:23:00.3874084Z         "impl": {
2026-06-22T02:23:00.3874174Z           "complete": true,
2026-06-22T02:23:00.3874251Z           "evidence": [
2026-06-22T02:23:00.3874342Z             {
2026-06-22T02:23:00.3874451Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3874532Z               "line": 264
2026-06-22T02:23:00.3874619Z             }
2026-06-22T02:23:00.3874698Z           ]
2026-06-22T02:23:00.3874779Z         },
2026-06-22T02:23:00.3874866Z         "int": {
2026-06-22T02:23:00.3874953Z           "complete": false,
2026-06-22T02:23:00.3875037Z           "evidence": []
2026-06-22T02:23:00.3875118Z         },
2026-06-22T02:23:00.3875199Z         "unit": {
2026-06-22T02:23:00.3875289Z           "complete": true,
2026-06-22T02:23:00.3875377Z           "evidence": [
2026-06-22T02:23:00.3875458Z             {
2026-06-22T02:23:00.3875564Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3875646Z               "line": 1094
2026-06-22T02:23:00.3875730Z             },
2026-06-22T02:23:00.3875816Z             {
2026-06-22T02:23:00.3875912Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3876002Z               "line": 1225
2026-06-22T02:23:00.3876092Z             },
2026-06-22T02:23:00.3876174Z             {
2026-06-22T02:23:00.3876279Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.3876364Z               "line": 1227
2026-06-22T02:23:00.3876450Z             }
2026-06-22T02:23:00.3876532Z           ]
2026-06-22T02:23:00.3876617Z         }
2026-06-22T02:23:00.3876698Z       }
2026-06-22T02:23:00.3876784Z     },
2026-06-22T02:23:00.3876871Z     {
2026-06-22T02:23:00.3876980Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-22T02:23:00.3877227Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-22T02:23:00.3877433Z       "requiredStages": [
2026-06-22T02:23:00.3877519Z         "impl",
2026-06-22T02:23:00.3877608Z         "unit"
2026-06-22T02:23:00.3877787Z       ],
2026-06-22T02:23:00.3877876Z       "stages": {
2026-06-22T02:23:00.3877961Z         "doc": {
2026-06-22T02:23:00.3878056Z           "complete": true,
2026-06-22T02:23:00.3878147Z           "evidence": [
2026-06-22T02:23:00.3878235Z             {
2026-06-22T02:23:00.3878339Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3878426Z               "line": 139
2026-06-22T02:23:00.3878512Z             }
2026-06-22T02:23:00.3878593Z           ]
2026-06-22T02:23:00.3878673Z         },
2026-06-22T02:23:00.3878756Z         "impl": {
2026-06-22T02:23:00.3878851Z           "complete": true,
2026-06-22T02:23:00.3879022Z           "evidence": [
2026-06-22T02:23:00.3879103Z             {
2026-06-22T02:23:00.3879589Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T02:23:00.3879680Z               "line": 29
2026-06-22T02:23:00.3879771Z             },
2026-06-22T02:23:00.3879875Z             {
2026-06-22T02:23:00.3879986Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T02:23:00.3880071Z               "line": 67
2026-06-22T02:23:00.3880151Z             },
2026-06-22T02:23:00.3880238Z             {
2026-06-22T02:23:00.3880358Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.3880452Z               "line": 101
2026-06-22T02:23:00.3880532Z             },
2026-06-22T02:23:00.3880608Z             {
2026-06-22T02:23:00.3880737Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3880821Z               "line": 30
2026-06-22T02:23:00.3880896Z             },
2026-06-22T02:23:00.3880978Z             {
2026-06-22T02:23:00.3881098Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3881178Z               "line": 48
2026-06-22T02:23:00.3881264Z             }
2026-06-22T02:23:00.3881346Z           ]
2026-06-22T02:23:00.3881427Z         },
2026-06-22T02:23:00.3881521Z         "int": {
2026-06-22T02:23:00.3881608Z           "complete": false,
2026-06-22T02:23:00.3881699Z           "evidence": []
2026-06-22T02:23:00.3881775Z         },
2026-06-22T02:23:00.3881864Z         "unit": {
2026-06-22T02:23:00.3881961Z           "complete": true,
2026-06-22T02:23:00.3882042Z           "evidence": [
2026-06-22T02:23:00.3882123Z             {
2026-06-22T02:23:00.3882242Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3882333Z               "line": 162
2026-06-22T02:23:00.3882404Z             }
2026-06-22T02:23:00.3882489Z           ]
2026-06-22T02:23:00.3882582Z         }
2026-06-22T02:23:00.3882657Z       }
2026-06-22T02:23:00.3882742Z     },
2026-06-22T02:23:00.3882818Z     {
2026-06-22T02:23:00.3882925Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-22T02:23:00.3883385Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-22T02:23:00.3883490Z       "requiredStages": [
2026-06-22T02:23:00.3883586Z         "doc",
2026-06-22T02:23:00.3883667Z         "impl",
2026-06-22T02:23:00.3883747Z         "unit"
2026-06-22T02:23:00.3883838Z       ],
2026-06-22T02:23:00.3883920Z       "stages": {
2026-06-22T02:23:00.3884006Z         "doc": {
2026-06-22T02:23:00.3884095Z           "complete": true,
2026-06-22T02:23:00.3884182Z           "evidence": [
2026-06-22T02:23:00.3884249Z             {
2026-06-22T02:23:00.3884363Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3884448Z               "line": 151
2026-06-22T02:23:00.3884535Z             }
2026-06-22T02:23:00.3884615Z           ]
2026-06-22T02:23:00.3884705Z         },
2026-06-22T02:23:00.3884792Z         "impl": {
2026-06-22T02:23:00.3884878Z           "complete": true,
2026-06-22T02:23:00.3884968Z           "evidence": [
2026-06-22T02:23:00.3885049Z             {
2026-06-22T02:23:00.3885169Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3885259Z               "line": 22
2026-06-22T02:23:00.3885569Z             }
2026-06-22T02:23:00.3885659Z           ]
2026-06-22T02:23:00.3885739Z         },
2026-06-22T02:23:00.3885914Z         "int": {
2026-06-22T02:23:00.3886009Z           "complete": false,
2026-06-22T02:23:00.3886104Z           "evidence": []
2026-06-22T02:23:00.3886181Z         },
2026-06-22T02:23:00.3886266Z         "unit": {
2026-06-22T02:23:00.3886357Z           "complete": true,
2026-06-22T02:23:00.3886438Z           "evidence": [
2026-06-22T02:23:00.3886515Z             {
2026-06-22T02:23:00.3886633Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3886725Z               "line": 298
2026-06-22T02:23:00.3886801Z             }
2026-06-22T02:23:00.3886887Z           ]
2026-06-22T02:23:00.3886967Z         }
2026-06-22T02:23:00.3887044Z       }
2026-06-22T02:23:00.3887130Z     },
2026-06-22T02:23:00.3887207Z     {
2026-06-22T02:23:00.3887325Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-22T02:23:00.3887774Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-22T02:23:00.3887897Z       "requiredStages": [
2026-06-22T02:23:00.3887984Z         "impl",
2026-06-22T02:23:00.3888061Z         "unit"
2026-06-22T02:23:00.3888149Z       ],
2026-06-22T02:23:00.3888221Z       "stages": {
2026-06-22T02:23:00.3888309Z         "doc": {
2026-06-22T02:23:00.3888395Z           "complete": true,
2026-06-22T02:23:00.3888478Z           "evidence": [
2026-06-22T02:23:00.3888564Z             {
2026-06-22T02:23:00.3888659Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3888754Z               "line": 145
2026-06-22T02:23:00.3888838Z             }
2026-06-22T02:23:00.3888918Z           ]
2026-06-22T02:23:00.3889077Z         },
2026-06-22T02:23:00.3889162Z         "impl": {
2026-06-22T02:23:00.3889252Z           "complete": true,
2026-06-22T02:23:00.3889339Z           "evidence": [
2026-06-22T02:23:00.3889416Z             {
2026-06-22T02:23:00.3889548Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:23:00.3889645Z               "line": 160
2026-06-22T02:23:00.3889740Z             },
2026-06-22T02:23:00.3892678Z             {
2026-06-22T02:23:00.3892827Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3892917Z               "line": 200
2026-06-22T02:23:00.3892998Z             },
2026-06-22T02:23:00.3893083Z             {
2026-06-22T02:23:00.3893208Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.3893288Z               "line": 298
2026-06-22T02:23:00.3893378Z             },
2026-06-22T02:23:00.3893456Z             {
2026-06-22T02:23:00.3893565Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:23:00.3893651Z               "line": 20
2026-06-22T02:23:00.3893733Z             }
2026-06-22T02:23:00.3893814Z           ]
2026-06-22T02:23:00.3893884Z         },
2026-06-22T02:23:00.3893969Z         "int": {
2026-06-22T02:23:00.3894064Z           "complete": false,
2026-06-22T02:23:00.3894166Z           "evidence": []
2026-06-22T02:23:00.3894237Z         },
2026-06-22T02:23:00.3894331Z         "unit": {
2026-06-22T02:23:00.3894413Z           "complete": true,
2026-06-22T02:23:00.3894499Z           "evidence": [
2026-06-22T02:23:00.3894584Z             {
2026-06-22T02:23:00.3894703Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3894790Z               "line": 937
2026-06-22T02:23:00.3894871Z             },
2026-06-22T02:23:00.3894946Z             {
2026-06-22T02:23:00.3895071Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T02:23:00.3895143Z               "line": 88
2026-06-22T02:23:00.3895224Z             },
2026-06-22T02:23:00.3895304Z             {
2026-06-22T02:23:00.3895410Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.3895495Z               "line": 851
2026-06-22T02:23:00.3895581Z             },
2026-06-22T02:23:00.3895657Z             {
2026-06-22T02:23:00.3895914Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.3896001Z               "line": 870
2026-06-22T02:23:00.3896176Z             },
2026-06-22T02:23:00.3896257Z             {
2026-06-22T02:23:00.3896385Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.3896470Z               "line": 279
2026-06-22T02:23:00.3896545Z             },
2026-06-22T02:23:00.3896626Z             {
2026-06-22T02:23:00.3896732Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:23:00.3896817Z               "line": 82
2026-06-22T02:23:00.3896898Z             },
2026-06-22T02:23:00.3896975Z             {
2026-06-22T02:23:00.3897079Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:23:00.3897165Z               "line": 99
2026-06-22T02:23:00.3897246Z             },
2026-06-22T02:23:00.3897319Z             {
2026-06-22T02:23:00.3897428Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:23:00.3897503Z               "line": 119
2026-06-22T02:23:00.3897605Z             }
2026-06-22T02:23:00.3897690Z           ]
2026-06-22T02:23:00.3897781Z         }
2026-06-22T02:23:00.3897866Z       }
2026-06-22T02:23:00.3897938Z     },
2026-06-22T02:23:00.3898024Z     {
2026-06-22T02:23:00.3898128Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-22T02:23:00.3899551Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-22T02:23:00.3899657Z       "requiredStages": [
2026-06-22T02:23:00.3899741Z         "doc",
2026-06-22T02:23:00.3899822Z         "impl",
2026-06-22T02:23:00.3899890Z         "unit"
2026-06-22T02:23:00.3899976Z       ],
2026-06-22T02:23:00.3900065Z       "stages": {
2026-06-22T02:23:00.3900142Z         "doc": {
2026-06-22T02:23:00.3900247Z           "complete": true,
2026-06-22T02:23:00.3900338Z           "evidence": [
2026-06-22T02:23:00.3900418Z             {
2026-06-22T02:23:00.3900524Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3900609Z               "line": 157
2026-06-22T02:23:00.3900690Z             }
2026-06-22T02:23:00.3900761Z           ]
2026-06-22T02:23:00.3900835Z         },
2026-06-22T02:23:00.3900914Z         "impl": {
2026-06-22T02:23:00.3901000Z           "complete": true,
2026-06-22T02:23:00.3901086Z           "evidence": [
2026-06-22T02:23:00.3901164Z             {
2026-06-22T02:23:00.3901295Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:23:00.3901382Z               "line": 137
2026-06-22T02:23:00.3901464Z             },
2026-06-22T02:23:00.3901540Z             {
2026-06-22T02:23:00.3901667Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3901757Z               "line": 564
2026-06-22T02:23:00.3901843Z             },
2026-06-22T02:23:00.3901917Z             {
2026-06-22T02:23:00.3902045Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3902127Z               "line": 571
2026-06-22T02:23:00.3902209Z             },
2026-06-22T02:23:00.3902294Z             {
2026-06-22T02:23:00.3902403Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.3902485Z               "line": 227
2026-06-22T02:23:00.3902571Z             }
2026-06-22T02:23:00.3902651Z           ]
2026-06-22T02:23:00.3902733Z         },
2026-06-22T02:23:00.3902804Z         "int": {
2026-06-22T02:23:00.3902900Z           "complete": false,
2026-06-22T02:23:00.3902985Z           "evidence": []
2026-06-22T02:23:00.3903067Z         },
2026-06-22T02:23:00.3903148Z         "unit": {
2026-06-22T02:23:00.3903243Z           "complete": true,
2026-06-22T02:23:00.3903328Z           "evidence": [
2026-06-22T02:23:00.3903515Z             {
2026-06-22T02:23:00.3903638Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3903820Z               "line": 1622
2026-06-22T02:23:00.3903896Z             },
2026-06-22T02:23:00.3903978Z             {
2026-06-22T02:23:00.3904092Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3904187Z               "line": 1680
2026-06-22T02:23:00.3904263Z             },
2026-06-22T02:23:00.3904346Z             {
2026-06-22T02:23:00.3904463Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.3904543Z               "line": 883
2026-06-22T02:23:00.3904624Z             }
2026-06-22T02:23:00.3904706Z           ]
2026-06-22T02:23:00.3904792Z         }
2026-06-22T02:23:00.3904872Z       }
2026-06-22T02:23:00.3904949Z     },
2026-06-22T02:23:00.3905026Z     {
2026-06-22T02:23:00.3905135Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-22T02:23:00.3905326Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-22T02:23:00.3905426Z       "requiredStages": [
2026-06-22T02:23:00.3905507Z         "impl",
2026-06-22T02:23:00.3905597Z         "unit"
2026-06-22T02:23:00.3905683Z       ],
2026-06-22T02:23:00.3905764Z       "stages": {
2026-06-22T02:23:00.3905845Z         "doc": {
2026-06-22T02:23:00.3905937Z           "complete": false,
2026-06-22T02:23:00.3906013Z           "evidence": []
2026-06-22T02:23:00.3906088Z         },
2026-06-22T02:23:00.3906164Z         "impl": {
2026-06-22T02:23:00.3906242Z           "complete": true,
2026-06-22T02:23:00.3906327Z           "evidence": [
2026-06-22T02:23:00.3906412Z             {
2026-06-22T02:23:00.3906518Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3906604Z               "line": 15
2026-06-22T02:23:00.3906676Z             },
2026-06-22T02:23:00.3906755Z             {
2026-06-22T02:23:00.3906888Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3906974Z               "line": 55
2026-06-22T02:23:00.3907068Z             },
2026-06-22T02:23:00.3907148Z             {
2026-06-22T02:23:00.3907253Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3907340Z               "line": 66
2026-06-22T02:23:00.3907410Z             },
2026-06-22T02:23:00.3907496Z             {
2026-06-22T02:23:00.3907602Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3907687Z               "line": 115
2026-06-22T02:23:00.3907772Z             },
2026-06-22T02:23:00.3907850Z             {
2026-06-22T02:23:00.3907964Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3908045Z               "line": 138
2026-06-22T02:23:00.3908126Z             }
2026-06-22T02:23:00.3908208Z           ]
2026-06-22T02:23:00.3908283Z         },
2026-06-22T02:23:00.3908369Z         "int": {
2026-06-22T02:23:00.3908469Z           "complete": false,
2026-06-22T02:23:00.3908575Z           "evidence": []
2026-06-22T02:23:00.3908646Z         },
2026-06-22T02:23:00.3908736Z         "unit": {
2026-06-22T02:23:00.3908823Z           "complete": true,
2026-06-22T02:23:00.3908904Z           "evidence": [
2026-06-22T02:23:00.3909060Z             {
2026-06-22T02:23:00.3909171Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3909256Z               "line": 363
2026-06-22T02:23:00.3909337Z             },
2026-06-22T02:23:00.3909438Z             {
2026-06-22T02:23:00.3909543Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3909622Z               "line": 369
2026-06-22T02:23:00.3909708Z             },
2026-06-22T02:23:00.3909789Z             {
2026-06-22T02:23:00.3909888Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3909972Z               "line": 383
2026-06-22T02:23:00.3910058Z             },
2026-06-22T02:23:00.3910135Z             {
2026-06-22T02:23:00.3910245Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.3910330Z               "line": 392
2026-06-22T02:23:00.3910536Z             },
2026-06-22T02:23:00.3910611Z             {
2026-06-22T02:23:00.3910722Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3910898Z               "line": 195
2026-06-22T02:23:00.3910978Z             },
2026-06-22T02:23:00.3911060Z             {
2026-06-22T02:23:00.3911164Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3911245Z               "line": 208
2026-06-22T02:23:00.3911322Z             },
2026-06-22T02:23:00.3911399Z             {
2026-06-22T02:23:00.3911508Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3911579Z               "line": 271
2026-06-22T02:23:00.3911661Z             },
2026-06-22T02:23:00.3911743Z             {
2026-06-22T02:23:00.3911851Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3911937Z               "line": 290
2026-06-22T02:23:00.3912014Z             },
2026-06-22T02:23:00.3912095Z             {
2026-06-22T02:23:00.3912203Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.3912298Z               "line": 319
2026-06-22T02:23:00.3912384Z             }
2026-06-22T02:23:00.3912459Z           ]
2026-06-22T02:23:00.3912535Z         }
2026-06-22T02:23:00.3912615Z       }
2026-06-22T02:23:00.3912697Z     },
2026-06-22T02:23:00.3912774Z     {
2026-06-22T02:23:00.3912887Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-22T02:23:00.3913131Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-22T02:23:00.3913221Z       "requiredStages": [
2026-06-22T02:23:00.3913308Z         "impl",
2026-06-22T02:23:00.3913393Z         "unit",
2026-06-22T02:23:00.3913478Z         "int"
2026-06-22T02:23:00.3913559Z       ],
2026-06-22T02:23:00.3913642Z       "stages": {
2026-06-22T02:23:00.3913726Z         "doc": {
2026-06-22T02:23:00.3913803Z           "complete": false,
2026-06-22T02:23:00.3913884Z           "evidence": []
2026-06-22T02:23:00.3913962Z         },
2026-06-22T02:23:00.3914051Z         "impl": {
2026-06-22T02:23:00.3914146Z           "complete": true,
2026-06-22T02:23:00.3914228Z           "evidence": [
2026-06-22T02:23:00.3914319Z             {
2026-06-22T02:23:00.3914423Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3914504Z               "line": 480
2026-06-22T02:23:00.3914581Z             },
2026-06-22T02:23:00.3914657Z             {
2026-06-22T02:23:00.3914766Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3914853Z               "line": 1010
2026-06-22T02:23:00.3914930Z             },
2026-06-22T02:23:00.3915009Z             {
2026-06-22T02:23:00.3915113Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3915194Z               "line": 1055
2026-06-22T02:23:00.3915281Z             },
2026-06-22T02:23:00.3915361Z             {
2026-06-22T02:23:00.3915460Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.3915543Z               "line": 1080
2026-06-22T02:23:00.3915619Z             },
2026-06-22T02:23:00.3915704Z             {
2026-06-22T02:23:00.3915809Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3915891Z               "line": 1678
2026-06-22T02:23:00.3915981Z             },
2026-06-22T02:23:00.3916062Z             {
2026-06-22T02:23:00.3916177Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3916258Z               "line": 1923
2026-06-22T02:23:00.3916339Z             },
2026-06-22T02:23:00.3916419Z             {
2026-06-22T02:23:00.3916540Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3916620Z               "line": 2054
2026-06-22T02:23:00.3916691Z             },
2026-06-22T02:23:00.3916773Z             {
2026-06-22T02:23:00.3916883Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.3916982Z               "line": 2102
2026-06-22T02:23:00.3917058Z             },
2026-06-22T02:23:00.3917141Z             {
2026-06-22T02:23:00.3917249Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3917424Z               "line": 46
2026-06-22T02:23:00.3917571Z             },
2026-06-22T02:23:00.3917651Z             {
2026-06-22T02:23:00.3917761Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3917848Z               "line": 200
2026-06-22T02:23:00.3917928Z             },
2026-06-22T02:23:00.3918013Z             {
2026-06-22T02:23:00.3918114Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.3918195Z               "line": 132
2026-06-22T02:23:00.3918276Z             },
2026-06-22T02:23:00.3918356Z             {
2026-06-22T02:23:00.3918458Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3918543Z               "line": 137
2026-06-22T02:23:00.3918624Z             },
2026-06-22T02:23:00.3918696Z             {
2026-06-22T02:23:00.3918806Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3918891Z               "line": 183
2026-06-22T02:23:00.3919078Z             }
2026-06-22T02:23:00.3919158Z           ]
2026-06-22T02:23:00.3919230Z         },
2026-06-22T02:23:00.3919315Z         "int": {
2026-06-22T02:23:00.3919421Z           "complete": true,
2026-06-22T02:23:00.3919497Z           "evidence": [
2026-06-22T02:23:00.3919578Z             {
2026-06-22T02:23:00.3919708Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-22T02:23:00.3919788Z               "line": 27
2026-06-22T02:23:00.3919868Z             },
2026-06-22T02:23:00.3919945Z             {
2026-06-22T02:23:00.3920065Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:23:00.3920154Z               "line": 148
2026-06-22T02:23:00.3920230Z             },
2026-06-22T02:23:00.3920311Z             {
2026-06-22T02:23:00.3920429Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T02:23:00.3920514Z               "line": 200
2026-06-22T02:23:00.3920590Z             }
2026-06-22T02:23:00.3920666Z           ]
2026-06-22T02:23:00.3920757Z         },
2026-06-22T02:23:00.3920838Z         "unit": {
2026-06-22T02:23:00.3920933Z           "complete": true,
2026-06-22T02:23:00.3921010Z           "evidence": [
2026-06-22T02:23:00.3921081Z             {
2026-06-22T02:23:00.3921195Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3921272Z               "line": 366
2026-06-22T02:23:00.3921359Z             },
2026-06-22T02:23:00.3921440Z             {
2026-06-22T02:23:00.3921548Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3921640Z               "line": 398
2026-06-22T02:23:00.3921720Z             },
2026-06-22T02:23:00.3921801Z             {
2026-06-22T02:23:00.3921916Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:23:00.3922002Z               "line": 419
2026-06-22T02:23:00.3922072Z             },
2026-06-22T02:23:00.3922149Z             {
2026-06-22T02:23:00.3922264Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.3922350Z               "line": 631
2026-06-22T02:23:00.3922435Z             },
2026-06-22T02:23:00.3922512Z             {
2026-06-22T02:23:00.3922637Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:23:00.3922721Z               "line": 289
2026-06-22T02:23:00.3922792Z             },
2026-06-22T02:23:00.3922868Z             {
2026-06-22T02:23:00.3922978Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:23:00.3923056Z               "line": 230
2026-06-22T02:23:00.3923137Z             },
2026-06-22T02:23:00.3923214Z             {
2026-06-22T02:23:00.3923315Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3923400Z               "line": 526
2026-06-22T02:23:00.3923480Z             },
2026-06-22T02:23:00.3923558Z             {
2026-06-22T02:23:00.3923668Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.3923747Z               "line": 556
2026-06-22T02:23:00.3923834Z             }
2026-06-22T02:23:00.3923916Z           ]
2026-06-22T02:23:00.3924096Z         }
2026-06-22T02:23:00.3924178Z       }
2026-06-22T02:23:00.3924249Z     },
2026-06-22T02:23:00.3924420Z     {
2026-06-22T02:23:00.3924541Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-22T02:23:00.3926189Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-22T02:23:00.3926283Z       "requiredStages": [
2026-06-22T02:23:00.3926364Z         "doc",
2026-06-22T02:23:00.3926452Z         "impl",
2026-06-22T02:23:00.3926518Z         "unit"
2026-06-22T02:23:00.3926612Z       ],
2026-06-22T02:23:00.3926699Z       "stages": {
2026-06-22T02:23:00.3926776Z         "doc": {
2026-06-22T02:23:00.3926865Z           "complete": true,
2026-06-22T02:23:00.3926951Z           "evidence": [
2026-06-22T02:23:00.3927028Z             {
2026-06-22T02:23:00.3927123Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.3927218Z               "line": 314
2026-06-22T02:23:00.3927304Z             }
2026-06-22T02:23:00.3927382Z           ]
2026-06-22T02:23:00.3927467Z         },
2026-06-22T02:23:00.3927547Z         "impl": {
2026-06-22T02:23:00.3927633Z           "complete": true,
2026-06-22T02:23:00.3927716Z           "evidence": [
2026-06-22T02:23:00.3927804Z             {
2026-06-22T02:23:00.3927937Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:23:00.3928018Z               "line": 33
2026-06-22T02:23:00.3928103Z             },
2026-06-22T02:23:00.3928183Z             {
2026-06-22T02:23:00.3928307Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:23:00.3928403Z               "line": 39
2026-06-22T02:23:00.3928478Z             }
2026-06-22T02:23:00.3928564Z           ]
2026-06-22T02:23:00.3928645Z         },
2026-06-22T02:23:00.3928722Z         "int": {
2026-06-22T02:23:00.3928807Z           "complete": false,
2026-06-22T02:23:00.3928897Z           "evidence": []
2026-06-22T02:23:00.3929051Z         },
2026-06-22T02:23:00.3929136Z         "unit": {
2026-06-22T02:23:00.3929226Z           "complete": true,
2026-06-22T02:23:00.3929314Z           "evidence": [
2026-06-22T02:23:00.3929390Z             {
2026-06-22T02:23:00.3929518Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:23:00.3929604Z               "line": 95
2026-06-22T02:23:00.3929671Z             }
2026-06-22T02:23:00.3929756Z           ]
2026-06-22T02:23:00.3929842Z         }
2026-06-22T02:23:00.3929919Z       }
2026-06-22T02:23:00.3930005Z     },
2026-06-22T02:23:00.3930085Z     {
2026-06-22T02:23:00.3930185Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-22T02:23:00.3932557Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-22T02:23:00.3932651Z       "requiredStages": [
2026-06-22T02:23:00.3932738Z         "impl",
2026-06-22T02:23:00.3932820Z         "unit"
2026-06-22T02:23:00.3933010Z       ],
2026-06-22T02:23:00.3933091Z       "stages": {
2026-06-22T02:23:00.3933173Z         "doc": {
2026-06-22T02:23:00.3933385Z           "complete": false,
2026-06-22T02:23:00.3933466Z           "evidence": []
2026-06-22T02:23:00.3933552Z         },
2026-06-22T02:23:00.3933635Z         "impl": {
2026-06-22T02:23:00.3933721Z           "complete": true,
2026-06-22T02:23:00.3933812Z           "evidence": [
2026-06-22T02:23:00.3933880Z             {
2026-06-22T02:23:00.3934017Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3934099Z               "line": 488
2026-06-22T02:23:00.3934184Z             }
2026-06-22T02:23:00.3934265Z           ]
2026-06-22T02:23:00.3934346Z         },
2026-06-22T02:23:00.3934423Z         "int": {
2026-06-22T02:23:00.3934508Z           "complete": false,
2026-06-22T02:23:00.3934594Z           "evidence": []
2026-06-22T02:23:00.3934675Z         },
2026-06-22T02:23:00.3934767Z         "unit": {
2026-06-22T02:23:00.3934866Z           "complete": true,
2026-06-22T02:23:00.3934946Z           "evidence": [
2026-06-22T02:23:00.3935018Z             {
2026-06-22T02:23:00.3935152Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.3935238Z               "line": 1466
2026-06-22T02:23:00.3935319Z             }
2026-06-22T02:23:00.3935401Z           ]
2026-06-22T02:23:00.3935486Z         }
2026-06-22T02:23:00.3935567Z       }
2026-06-22T02:23:00.3935653Z     },
2026-06-22T02:23:00.3935730Z     {
2026-06-22T02:23:00.3935833Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-22T02:23:00.3937966Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-22T02:23:00.3938083Z       "requiredStages": [
2026-06-22T02:23:00.3938169Z         "unit"
2026-06-22T02:23:00.3938251Z       ],
2026-06-22T02:23:00.3938327Z       "stages": {
2026-06-22T02:23:00.3938417Z         "doc": {
2026-06-22T02:23:00.3938492Z           "complete": false,
2026-06-22T02:23:00.3938573Z           "evidence": []
2026-06-22T02:23:00.3938659Z         },
2026-06-22T02:23:00.3938738Z         "impl": {
2026-06-22T02:23:00.3938828Z           "complete": true,
2026-06-22T02:23:00.3938905Z           "evidence": [
2026-06-22T02:23:00.3939077Z             {
2026-06-22T02:23:00.3939177Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3939278Z               "line": 3520
2026-06-22T02:23:00.3939363Z             },
2026-06-22T02:23:00.3939453Z             {
2026-06-22T02:23:00.3939564Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3939640Z               "line": 3572
2026-06-22T02:23:00.3939725Z             },
2026-06-22T02:23:00.3939806Z             {
2026-06-22T02:23:00.3939907Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3939993Z               "line": 3617
2026-06-22T02:23:00.3940063Z             },
2026-06-22T02:23:00.3940145Z             {
2026-06-22T02:23:00.3940259Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3940340Z               "line": 92
2026-06-22T02:23:00.3940426Z             },
2026-06-22T02:23:00.3940504Z             {
2026-06-22T02:23:00.3940607Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3940689Z               "line": 148
2026-06-22T02:23:00.3940770Z             },
2026-06-22T02:23:00.3940856Z             {
2026-06-22T02:23:00.3941065Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3941148Z               "line": 192
2026-06-22T02:23:00.3941317Z             },
2026-06-22T02:23:00.3941402Z             {
2026-06-22T02:23:00.3941502Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3941582Z               "line": 200
2026-06-22T02:23:00.3941667Z             },
2026-06-22T02:23:00.3941748Z             {
2026-06-22T02:23:00.3941849Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3941939Z               "line": 211
2026-06-22T02:23:00.3942019Z             },
2026-06-22T02:23:00.3942107Z             {
2026-06-22T02:23:00.3942202Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3942287Z               "line": 265
2026-06-22T02:23:00.3942373Z             },
2026-06-22T02:23:00.3942455Z             {
2026-06-22T02:23:00.3942555Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3942635Z               "line": 279
2026-06-22T02:23:00.3942731Z             }
2026-06-22T02:23:00.3942803Z           ]
2026-06-22T02:23:00.3942883Z         },
2026-06-22T02:23:00.3942978Z         "int": {
2026-06-22T02:23:00.3943056Z           "complete": false,
2026-06-22T02:23:00.3943146Z           "evidence": []
2026-06-22T02:23:00.3943221Z         },
2026-06-22T02:23:00.3943312Z         "unit": {
2026-06-22T02:23:00.3943395Z           "complete": true,
2026-06-22T02:23:00.3943480Z           "evidence": [
2026-06-22T02:23:00.3943565Z             {
2026-06-22T02:23:00.3943671Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3943761Z               "line": 419
2026-06-22T02:23:00.3943841Z             },
2026-06-22T02:23:00.3943926Z             {
2026-06-22T02:23:00.3944027Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3944116Z               "line": 470
2026-06-22T02:23:00.3944196Z             },
2026-06-22T02:23:00.3944272Z             {
2026-06-22T02:23:00.3944377Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3944459Z               "line": 499
2026-06-22T02:23:00.3944548Z             },
2026-06-22T02:23:00.3944629Z             {
2026-06-22T02:23:00.3944731Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3944826Z               "line": 526
2026-06-22T02:23:00.3944906Z             }
2026-06-22T02:23:00.3944988Z           ]
2026-06-22T02:23:00.3945069Z         }
2026-06-22T02:23:00.3945155Z       }
2026-06-22T02:23:00.3945225Z     },
2026-06-22T02:23:00.3945312Z     {
2026-06-22T02:23:00.3945421Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-22T02:23:00.3945598Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-22T02:23:00.3945698Z       "requiredStages": [
2026-06-22T02:23:00.3945779Z         "impl",
2026-06-22T02:23:00.3945870Z         "unit"
2026-06-22T02:23:00.3945951Z       ],
2026-06-22T02:23:00.3946037Z       "stages": {
2026-06-22T02:23:00.3946123Z         "doc": {
2026-06-22T02:23:00.3946208Z           "complete": false,
2026-06-22T02:23:00.3946328Z           "evidence": []
2026-06-22T02:23:00.3946412Z         },
2026-06-22T02:23:00.3946509Z         "impl": {
2026-06-22T02:23:00.3946595Z           "complete": true,
2026-06-22T02:23:00.3946690Z           "evidence": [
2026-06-22T02:23:00.3946770Z             {
2026-06-22T02:23:00.3946898Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3946985Z               "line": 62
2026-06-22T02:23:00.3947070Z             },
2026-06-22T02:23:00.3947156Z             {
2026-06-22T02:23:00.3947276Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3947366Z               "line": 71
2026-06-22T02:23:00.3947451Z             },
2026-06-22T02:23:00.3947533Z             {
2026-06-22T02:23:00.3947657Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3947737Z               "line": 80
2026-06-22T02:23:00.3947814Z             },
2026-06-22T02:23:00.3947901Z             {
2026-06-22T02:23:00.3948095Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.3948182Z               "line": 88
2026-06-22T02:23:00.3948334Z             },
2026-06-22T02:23:00.3948419Z             {
2026-06-22T02:23:00.3948526Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3948615Z               "line": 33
2026-06-22T02:23:00.3948700Z             },
2026-06-22T02:23:00.3948782Z             {
2026-06-22T02:23:00.3948897Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3949062Z               "line": 65
2026-06-22T02:23:00.3949138Z             },
2026-06-22T02:23:00.3949210Z             {
2026-06-22T02:23:00.3949322Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3949422Z               "line": 74
2026-06-22T02:23:00.3949504Z             },
2026-06-22T02:23:00.3949585Z             {
2026-06-22T02:23:00.3949689Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3949770Z               "line": 93
2026-06-22T02:23:00.3949852Z             },
2026-06-22T02:23:00.3949942Z             {
2026-06-22T02:23:00.3950056Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3950138Z               "line": 102
2026-06-22T02:23:00.3950219Z             },
2026-06-22T02:23:00.3950299Z             {
2026-06-22T02:23:00.3950415Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3950495Z               "line": 111
2026-06-22T02:23:00.3950581Z             },
2026-06-22T02:23:00.3950666Z             {
2026-06-22T02:23:00.3950768Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3950853Z               "line": 122
2026-06-22T02:23:00.3950934Z             },
2026-06-22T02:23:00.3951020Z             {
2026-06-22T02:23:00.3951125Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3951210Z               "line": 140
2026-06-22T02:23:00.3951291Z             },
2026-06-22T02:23:00.3951364Z             {
2026-06-22T02:23:00.3951477Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3951558Z               "line": 149
2026-06-22T02:23:00.3951640Z             },
2026-06-22T02:23:00.3951722Z             {
2026-06-22T02:23:00.3951816Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3951910Z               "line": 158
2026-06-22T02:23:00.3951982Z             },
2026-06-22T02:23:00.3952063Z             {
2026-06-22T02:23:00.3952165Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3952260Z               "line": 169
2026-06-22T02:23:00.3952347Z             },
2026-06-22T02:23:00.3952429Z             {
2026-06-22T02:23:00.3952542Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3952623Z               "line": 177
2026-06-22T02:23:00.3952714Z             },
2026-06-22T02:23:00.3952795Z             {
2026-06-22T02:23:00.3952908Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3952992Z               "line": 186
2026-06-22T02:23:00.3953077Z             },
2026-06-22T02:23:00.3953162Z             {
2026-06-22T02:23:00.3953267Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3953353Z               "line": 195
2026-06-22T02:23:00.3953434Z             },
2026-06-22T02:23:00.3953510Z             {
2026-06-22T02:23:00.3953626Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3953701Z               "line": 204
2026-06-22T02:23:00.3953786Z             },
2026-06-22T02:23:00.3953858Z             {
2026-06-22T02:23:00.3953992Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3954077Z               "line": 216
2026-06-22T02:23:00.3954163Z             },
2026-06-22T02:23:00.3954246Z             {
2026-06-22T02:23:00.3954350Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3954425Z               "line": 223
2026-06-22T02:23:00.3954500Z             },
2026-06-22T02:23:00.3954582Z             {
2026-06-22T02:23:00.3954690Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3954880Z               "line": 232
2026-06-22T02:23:00.3954962Z             },
2026-06-22T02:23:00.3955142Z             {
2026-06-22T02:23:00.3955248Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3955333Z               "line": 239
2026-06-22T02:23:00.3955414Z             },
2026-06-22T02:23:00.3955490Z             {
2026-06-22T02:23:00.3955600Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3955681Z               "line": 306
2026-06-22T02:23:00.3955761Z             },
2026-06-22T02:23:00.3955839Z             {
2026-06-22T02:23:00.3955944Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3956034Z               "line": 318
2026-06-22T02:23:00.3956115Z             },
2026-06-22T02:23:00.3956206Z             {
2026-06-22T02:23:00.3956315Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3956405Z               "line": 405
2026-06-22T02:23:00.3956498Z             }
2026-06-22T02:23:00.3956578Z           ]
2026-06-22T02:23:00.3956663Z         },
2026-06-22T02:23:00.3956744Z         "int": {
2026-06-22T02:23:00.3956831Z           "complete": false,
2026-06-22T02:23:00.3956921Z           "evidence": []
2026-06-22T02:23:00.3956997Z         },
2026-06-22T02:23:00.3957079Z         "unit": {
2026-06-22T02:23:00.3957160Z           "complete": true,
2026-06-22T02:23:00.3957259Z           "evidence": [
2026-06-22T02:23:00.3957339Z             {
2026-06-22T02:23:00.3957449Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3957531Z               "line": 487
2026-06-22T02:23:00.3957612Z             },
2026-06-22T02:23:00.3957697Z             {
2026-06-22T02:23:00.3957797Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3957883Z               "line": 528
2026-06-22T02:23:00.3957964Z             },
2026-06-22T02:23:00.3958049Z             {
2026-06-22T02:23:00.3958161Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3958251Z               "line": 541
2026-06-22T02:23:00.3958335Z             },
2026-06-22T02:23:00.3958418Z             {
2026-06-22T02:23:00.3958527Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.3958622Z               "line": 627
2026-06-22T02:23:00.3958698Z             }
2026-06-22T02:23:00.3958781Z           ]
2026-06-22T02:23:00.3958860Z         }
2026-06-22T02:23:00.3959018Z       }
2026-06-22T02:23:00.3959090Z     },
2026-06-22T02:23:00.3959184Z     {
2026-06-22T02:23:00.3959289Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-22T02:23:00.3959485Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-22T02:23:00.3959570Z       "requiredStages": [
2026-06-22T02:23:00.3959655Z         "impl",
2026-06-22T02:23:00.3962352Z         "unit"
2026-06-22T02:23:00.3962452Z       ],
2026-06-22T02:23:00.3962547Z       "stages": {
2026-06-22T02:23:00.3962633Z         "doc": {
2026-06-22T02:23:00.3962716Z           "complete": false,
2026-06-22T02:23:00.3962820Z           "evidence": []
2026-06-22T02:23:00.3962887Z         },
2026-06-22T02:23:00.3962979Z         "impl": {
2026-06-22T02:23:00.3963069Z           "complete": true,
2026-06-22T02:23:00.3963154Z           "evidence": [
2026-06-22T02:23:00.3963237Z             {
2026-06-22T02:23:00.3963355Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.3963445Z               "line": 175
2026-06-22T02:23:00.3963517Z             },
2026-06-22T02:23:00.3963599Z             {
2026-06-22T02:23:00.3963726Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.3963808Z               "line": 171
2026-06-22T02:23:00.3963890Z             }
2026-06-22T02:23:00.3963970Z           ]
2026-06-22T02:23:00.3964051Z         },
2026-06-22T02:23:00.3964132Z         "int": {
2026-06-22T02:23:00.3964224Z           "complete": false,
2026-06-22T02:23:00.3964304Z           "evidence": []
2026-06-22T02:23:00.3964385Z         },
2026-06-22T02:23:00.3964462Z         "unit": {
2026-06-22T02:23:00.3964680Z           "complete": true,
2026-06-22T02:23:00.3964762Z           "evidence": [
2026-06-22T02:23:00.3964952Z             {
2026-06-22T02:23:00.3965075Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.3965161Z               "line": 297
2026-06-22T02:23:00.3965246Z             },
2026-06-22T02:23:00.3965326Z             {
2026-06-22T02:23:00.3965440Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.3965522Z               "line": 836
2026-06-22T02:23:00.3965598Z             },
2026-06-22T02:23:00.3965678Z             {
2026-06-22T02:23:00.3965789Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.3965870Z               "line": 849
2026-06-22T02:23:00.3965950Z             }
2026-06-22T02:23:00.3966021Z           ]
2026-06-22T02:23:00.3966104Z         }
2026-06-22T02:23:00.3966184Z       }
2026-06-22T02:23:00.3966265Z     },
2026-06-22T02:23:00.3966345Z     {
2026-06-22T02:23:00.3966456Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-22T02:23:00.3966599Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-22T02:23:00.3966704Z       "requiredStages": [
2026-06-22T02:23:00.3966790Z         "impl",
2026-06-22T02:23:00.3966871Z         "unit"
2026-06-22T02:23:00.3966952Z       ],
2026-06-22T02:23:00.3967033Z       "stages": {
2026-06-22T02:23:00.3967119Z         "doc": {
2026-06-22T02:23:00.3967199Z           "complete": false,
2026-06-22T02:23:00.3967295Z           "evidence": []
2026-06-22T02:23:00.3967377Z         },
2026-06-22T02:23:00.3967458Z         "impl": {
2026-06-22T02:23:00.3967547Z           "complete": true,
2026-06-22T02:23:00.3967634Z           "evidence": [
2026-06-22T02:23:00.3967716Z             {
2026-06-22T02:23:00.3967824Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.3967909Z               "line": 116
2026-06-22T02:23:00.3967990Z             },
2026-06-22T02:23:00.3968072Z             {
2026-06-22T02:23:00.3968200Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.3968290Z               "line": 507
2026-06-22T02:23:00.3968377Z             }
2026-06-22T02:23:00.3968458Z           ]
2026-06-22T02:23:00.3968534Z         },
2026-06-22T02:23:00.3968619Z         "int": {
2026-06-22T02:23:00.3968701Z           "complete": false,
2026-06-22T02:23:00.3968787Z           "evidence": []
2026-06-22T02:23:00.3968867Z         },
2026-06-22T02:23:00.3969040Z         "unit": {
2026-06-22T02:23:00.3969125Z           "complete": true,
2026-06-22T02:23:00.3969205Z           "evidence": [
2026-06-22T02:23:00.3969283Z             {
2026-06-22T02:23:00.3969430Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.3969511Z               "line": 541
2026-06-22T02:23:00.3969593Z             }
2026-06-22T02:23:00.3969674Z           ]
2026-06-22T02:23:00.3969754Z         }
2026-06-22T02:23:00.3969830Z       }
2026-06-22T02:23:00.3969917Z     },
2026-06-22T02:23:00.3969999Z     {
2026-06-22T02:23:00.3970120Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-22T02:23:00.3970273Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-22T02:23:00.3970372Z       "requiredStages": [
2026-06-22T02:23:00.3970457Z         "impl",
2026-06-22T02:23:00.3970537Z         "unit"
2026-06-22T02:23:00.3970619Z       ],
2026-06-22T02:23:00.3970706Z       "stages": {
2026-06-22T02:23:00.3970785Z         "doc": {
2026-06-22T02:23:00.3970876Z           "complete": false,
2026-06-22T02:23:00.3970963Z           "evidence": []
2026-06-22T02:23:00.3971034Z         },
2026-06-22T02:23:00.3971119Z         "impl": {
2026-06-22T02:23:00.3971206Z           "complete": true,
2026-06-22T02:23:00.3971287Z           "evidence": [
2026-06-22T02:23:00.3971373Z             {
2026-06-22T02:23:00.3971482Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.3971564Z               "line": 552
2026-06-22T02:23:00.3971644Z             },
2026-06-22T02:23:00.3971716Z             {
2026-06-22T02:23:00.3972026Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3972111Z               "line": 28
2026-06-22T02:23:00.3972288Z             }
2026-06-22T02:23:00.3972364Z           ]
2026-06-22T02:23:00.3972450Z         },
2026-06-22T02:23:00.3972532Z         "int": {
2026-06-22T02:23:00.3972626Z           "complete": false,
2026-06-22T02:23:00.3972707Z           "evidence": []
2026-06-22T02:23:00.3972790Z         },
2026-06-22T02:23:00.3972876Z         "unit": {
2026-06-22T02:23:00.3972955Z           "complete": true,
2026-06-22T02:23:00.3973040Z           "evidence": [
2026-06-22T02:23:00.3973107Z             {
2026-06-22T02:23:00.3973221Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.3973309Z               "line": 229
2026-06-22T02:23:00.3973385Z             }
2026-06-22T02:23:00.3973472Z           ]
2026-06-22T02:23:00.3973549Z         }
2026-06-22T02:23:00.3973629Z       }
2026-06-22T02:23:00.3973710Z     },
2026-06-22T02:23:00.3973802Z     {
2026-06-22T02:23:00.3973897Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-22T02:23:00.3974024Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-22T02:23:00.3974131Z       "requiredStages": [],
2026-06-22T02:23:00.3974211Z       "stages": {
2026-06-22T02:23:00.3974291Z         "doc": {
2026-06-22T02:23:00.3974383Z           "complete": false,
2026-06-22T02:23:00.3974464Z           "evidence": []
2026-06-22T02:23:00.3974540Z         },
2026-06-22T02:23:00.3974625Z         "impl": {
2026-06-22T02:23:00.3974717Z           "complete": false,
2026-06-22T02:23:00.3974803Z           "evidence": []
2026-06-22T02:23:00.3974883Z         },
2026-06-22T02:23:00.3974964Z         "int": {
2026-06-22T02:23:00.3975051Z           "complete": false,
2026-06-22T02:23:00.3975136Z           "evidence": []
2026-06-22T02:23:00.3975216Z         },
2026-06-22T02:23:00.3975298Z         "unit": {
2026-06-22T02:23:00.3975385Z           "complete": false,
2026-06-22T02:23:00.3975475Z           "evidence": []
2026-06-22T02:23:00.3975555Z         }
2026-06-22T02:23:00.3975644Z       }
2026-06-22T02:23:00.3975726Z     },
2026-06-22T02:23:00.3975810Z     {
2026-06-22T02:23:00.3975924Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-22T02:23:00.3976067Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-22T02:23:00.3976158Z       "requiredStages": [
2026-06-22T02:23:00.3976243Z         "impl",
2026-06-22T02:23:00.3976329Z         "unit"
2026-06-22T02:23:00.3976416Z       ],
2026-06-22T02:23:00.3976496Z       "stages": {
2026-06-22T02:23:00.3976572Z         "doc": {
2026-06-22T02:23:00.3976659Z           "complete": false,
2026-06-22T02:23:00.3976749Z           "evidence": []
2026-06-22T02:23:00.3976825Z         },
2026-06-22T02:23:00.3976910Z         "impl": {
2026-06-22T02:23:00.3976988Z           "complete": true,
2026-06-22T02:23:00.3977069Z           "evidence": [
2026-06-22T02:23:00.3977154Z             {
2026-06-22T02:23:00.3977259Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:23:00.3977341Z               "line": 19
2026-06-22T02:23:00.3977426Z             },
2026-06-22T02:23:00.3977512Z             {
2026-06-22T02:23:00.3977623Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3977707Z               "line": 463
2026-06-22T02:23:00.3977793Z             },
2026-06-22T02:23:00.3977874Z             {
2026-06-22T02:23:00.3977990Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3978074Z               "line": 499
2026-06-22T02:23:00.3978156Z             },
2026-06-22T02:23:00.3978228Z             {
2026-06-22T02:23:00.3978328Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3978407Z               "line": 547
2026-06-22T02:23:00.3978483Z             },
2026-06-22T02:23:00.3978564Z             {
2026-06-22T02:23:00.3978666Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:23:00.3978746Z               "line": 15
2026-06-22T02:23:00.3978826Z             },
2026-06-22T02:23:00.3979042Z             {
2026-06-22T02:23:00.3979146Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:23:00.3979319Z               "line": 48
2026-06-22T02:23:00.3979404Z             },
2026-06-22T02:23:00.3979485Z             {
2026-06-22T02:23:00.3979590Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:23:00.3979671Z               "line": 119
2026-06-22T02:23:00.3979752Z             },
2026-06-22T02:23:00.3979828Z             {
2026-06-22T02:23:00.3979929Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.3980019Z               "line": 3948
2026-06-22T02:23:00.3980090Z             }
2026-06-22T02:23:00.3980173Z           ]
2026-06-22T02:23:00.3980248Z         },
2026-06-22T02:23:00.3980319Z         "int": {
2026-06-22T02:23:00.3980409Z           "complete": false,
2026-06-22T02:23:00.3980497Z           "evidence": []
2026-06-22T02:23:00.3980577Z         },
2026-06-22T02:23:00.3980662Z         "unit": {
2026-06-22T02:23:00.3980757Z           "complete": true,
2026-06-22T02:23:00.3980852Z           "evidence": [
2026-06-22T02:23:00.3980928Z             {
2026-06-22T02:23:00.3981041Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3981122Z               "line": 765
2026-06-22T02:23:00.3981204Z             },
2026-06-22T02:23:00.3981284Z             {
2026-06-22T02:23:00.3981393Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:23:00.3981475Z               "line": 165
2026-06-22T02:23:00.3981551Z             },
2026-06-22T02:23:00.3981632Z             {
2026-06-22T02:23:00.3981736Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:23:00.3981824Z               "line": 175
2026-06-22T02:23:00.3981909Z             }
2026-06-22T02:23:00.3981984Z           ]
2026-06-22T02:23:00.3982066Z         }
2026-06-22T02:23:00.3982143Z       }
2026-06-22T02:23:00.3982233Z     },
2026-06-22T02:23:00.3982313Z     {
2026-06-22T02:23:00.3982415Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-22T02:23:00.3983320Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-22T02:23:00.3983421Z       "requiredStages": [
2026-06-22T02:23:00.3983506Z         "impl",
2026-06-22T02:23:00.3983586Z         "unit"
2026-06-22T02:23:00.3983672Z       ],
2026-06-22T02:23:00.3983753Z       "stages": {
2026-06-22T02:23:00.3983828Z         "doc": {
2026-06-22T02:23:00.3983912Z           "complete": false,
2026-06-22T02:23:00.3983994Z           "evidence": []
2026-06-22T02:23:00.3984080Z         },
2026-06-22T02:23:00.3984161Z         "impl": {
2026-06-22T02:23:00.3984251Z           "complete": true,
2026-06-22T02:23:00.3984328Z           "evidence": [
2026-06-22T02:23:00.3984409Z             {
2026-06-22T02:23:00.3984518Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3984599Z               "line": 192
2026-06-22T02:23:00.3984681Z             },
2026-06-22T02:23:00.3984771Z             {
2026-06-22T02:23:00.3984880Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3984967Z               "line": 279
2026-06-22T02:23:00.3985053Z             }
2026-06-22T02:23:00.3985134Z           ]
2026-06-22T02:23:00.3985205Z         },
2026-06-22T02:23:00.3985282Z         "int": {
2026-06-22T02:23:00.3985372Z           "complete": false,
2026-06-22T02:23:00.3985452Z           "evidence": []
2026-06-22T02:23:00.3985534Z         },
2026-06-22T02:23:00.3985616Z         "unit": {
2026-06-22T02:23:00.3985701Z           "complete": true,
2026-06-22T02:23:00.3985781Z           "evidence": [
2026-06-22T02:23:00.3985868Z             {
2026-06-22T02:23:00.3985960Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3986049Z               "line": 470
2026-06-22T02:23:00.3986134Z             },
2026-06-22T02:23:00.3986209Z             {
2026-06-22T02:23:00.3986427Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.3986512Z               "line": 526
2026-06-22T02:23:00.3986656Z             }
2026-06-22T02:23:00.3986737Z           ]
2026-06-22T02:23:00.3986817Z         }
2026-06-22T02:23:00.3986899Z       }
2026-06-22T02:23:00.3986981Z     },
2026-06-22T02:23:00.3987061Z     {
2026-06-22T02:23:00.3987170Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-22T02:23:00.3990984Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-22T02:23:00.3991109Z       "requiredStages": [
2026-06-22T02:23:00.3991194Z         "impl",
2026-06-22T02:23:00.3991274Z         "unit",
2026-06-22T02:23:00.3991360Z         "int"
2026-06-22T02:23:00.3991431Z       ],
2026-06-22T02:23:00.3991525Z       "stages": {
2026-06-22T02:23:00.3991601Z         "doc": {
2026-06-22T02:23:00.3991696Z           "complete": false,
2026-06-22T02:23:00.3991787Z           "evidence": []
2026-06-22T02:23:00.3991868Z         },
2026-06-22T02:23:00.3991944Z         "impl": {
2026-06-22T02:23:00.3992021Z           "complete": true,
2026-06-22T02:23:00.3992112Z           "evidence": [
2026-06-22T02:23:00.3992188Z             {
2026-06-22T02:23:00.3992321Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.3992412Z               "line": 116
2026-06-22T02:23:00.3992483Z             },
2026-06-22T02:23:00.3992568Z             {
2026-06-22T02:23:00.3992689Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.3992774Z               "line": 132
2026-06-22T02:23:00.3992855Z             },
2026-06-22T02:23:00.3992931Z             {
2026-06-22T02:23:00.3993051Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.3993132Z               "line": 434
2026-06-22T02:23:00.3993226Z             },
2026-06-22T02:23:00.3993304Z             {
2026-06-22T02:23:00.3993413Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3993503Z               "line": 139
2026-06-22T02:23:00.3993585Z             },
2026-06-22T02:23:00.3993666Z             {
2026-06-22T02:23:00.3993784Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3993871Z               "line": 326
2026-06-22T02:23:00.3993948Z             },
2026-06-22T02:23:00.3994033Z             {
2026-06-22T02:23:00.3994136Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3994222Z               "line": 555
2026-06-22T02:23:00.3994304Z             }
2026-06-22T02:23:00.3994383Z           ]
2026-06-22T02:23:00.3994463Z         },
2026-06-22T02:23:00.3994539Z         "int": {
2026-06-22T02:23:00.3994631Z           "complete": true,
2026-06-22T02:23:00.3994712Z           "evidence": [
2026-06-22T02:23:00.3994792Z             {
2026-06-22T02:23:00.3995064Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T02:23:00.3995135Z               "line": 32
2026-06-22T02:23:00.3995303Z             }
2026-06-22T02:23:00.3995384Z           ]
2026-06-22T02:23:00.3995469Z         },
2026-06-22T02:23:00.3995551Z         "unit": {
2026-06-22T02:23:00.3995641Z           "complete": true,
2026-06-22T02:23:00.3995731Z           "evidence": [
2026-06-22T02:23:00.3995812Z             {
2026-06-22T02:23:00.3995918Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3996007Z               "line": 625
2026-06-22T02:23:00.3996089Z             },
2026-06-22T02:23:00.3996171Z             {
2026-06-22T02:23:00.3996285Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3996375Z               "line": 646
2026-06-22T02:23:00.3996457Z             },
2026-06-22T02:23:00.3996534Z             {
2026-06-22T02:23:00.3996641Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3996736Z               "line": 662
2026-06-22T02:23:00.3996822Z             },
2026-06-22T02:23:00.3996898Z             {
2026-06-22T02:23:00.3997020Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3997101Z               "line": 680
2026-06-22T02:23:00.3997183Z             },
2026-06-22T02:23:00.3997264Z             {
2026-06-22T02:23:00.3997378Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.3997469Z               "line": 704
2026-06-22T02:23:00.3997545Z             }
2026-06-22T02:23:00.3997635Z           ]
2026-06-22T02:23:00.3997716Z         }
2026-06-22T02:23:00.3997803Z       }
2026-06-22T02:23:00.3997888Z     },
2026-06-22T02:23:00.3997969Z     {
2026-06-22T02:23:00.3998080Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-22T02:23:00.3998222Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-22T02:23:00.3998312Z       "requiredStages": [
2026-06-22T02:23:00.3998394Z         "impl",
2026-06-22T02:23:00.3998480Z         "unit"
2026-06-22T02:23:00.3998556Z       ],
2026-06-22T02:23:00.3998641Z       "stages": {
2026-06-22T02:23:00.3998728Z         "doc": {
2026-06-22T02:23:00.3998804Z           "complete": false,
2026-06-22T02:23:00.3998894Z           "evidence": []
2026-06-22T02:23:00.3999024Z         },
2026-06-22T02:23:00.3999115Z         "impl": {
2026-06-22T02:23:00.3999189Z           "complete": true,
2026-06-22T02:23:00.3999271Z           "evidence": [
2026-06-22T02:23:00.3999377Z             {
2026-06-22T02:23:00.3999490Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.3999575Z               "line": 35
2026-06-22T02:23:00.3999656Z             }
2026-06-22T02:23:00.3999733Z           ]
2026-06-22T02:23:00.3999814Z         },
2026-06-22T02:23:00.3999894Z         "int": {
2026-06-22T02:23:00.3999995Z           "complete": false,
2026-06-22T02:23:00.4000072Z           "evidence": []
2026-06-22T02:23:00.4000162Z         },
2026-06-22T02:23:00.4000243Z         "unit": {
2026-06-22T02:23:00.4000344Z           "complete": true,
2026-06-22T02:23:00.4000429Z           "evidence": [
2026-06-22T02:23:00.4000514Z             {
2026-06-22T02:23:00.4000629Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:23:00.4000710Z               "line": 220
2026-06-22T02:23:00.4000791Z             }
2026-06-22T02:23:00.4000872Z           ]
2026-06-22T02:23:00.4000954Z         }
2026-06-22T02:23:00.4001035Z       }
2026-06-22T02:23:00.4001120Z     },
2026-06-22T02:23:00.4001201Z     {
2026-06-22T02:23:00.4001307Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-22T02:23:00.4004393Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-22T02:23:00.4004687Z       "requiredStages": [
2026-06-22T02:23:00.4004763Z         "impl",
2026-06-22T02:23:00.4004844Z         "unit",
2026-06-22T02:23:00.4004929Z         "int"
2026-06-22T02:23:00.4005013Z       ],
2026-06-22T02:23:00.4005099Z       "stages": {
2026-06-22T02:23:00.4005181Z         "doc": {
2026-06-22T02:23:00.4005286Z           "complete": false,
2026-06-22T02:23:00.4005376Z           "evidence": []
2026-06-22T02:23:00.4005467Z         },
2026-06-22T02:23:00.4005553Z         "impl": {
2026-06-22T02:23:00.4005643Z           "complete": true,
2026-06-22T02:23:00.4005734Z           "evidence": [
2026-06-22T02:23:00.4005811Z             {
2026-06-22T02:23:00.4005939Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4006024Z               "line": 202
2026-06-22T02:23:00.4006111Z             },
2026-06-22T02:23:00.4006187Z             {
2026-06-22T02:23:00.4006310Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:23:00.4006397Z               "line": 107
2026-06-22T02:23:00.4006478Z             },
2026-06-22T02:23:00.4006563Z             {
2026-06-22T02:23:00.4006664Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:23:00.4006755Z               "line": 138
2026-06-22T02:23:00.4006831Z             },
2026-06-22T02:23:00.4006906Z             {
2026-06-22T02:23:00.4007022Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4007118Z               "line": 209
2026-06-22T02:23:00.4007193Z             },
2026-06-22T02:23:00.4007273Z             {
2026-06-22T02:23:00.4007387Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4007473Z               "line": 246
2026-06-22T02:23:00.4007552Z             },
2026-06-22T02:23:00.4007637Z             {
2026-06-22T02:23:00.4007738Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4007820Z               "line": 379
2026-06-22T02:23:00.4007899Z             }
2026-06-22T02:23:00.4007981Z           ]
2026-06-22T02:23:00.4008063Z         },
2026-06-22T02:23:00.4008134Z         "int": {
2026-06-22T02:23:00.4008219Z           "complete": true,
2026-06-22T02:23:00.4008305Z           "evidence": [
2026-06-22T02:23:00.4008387Z             {
2026-06-22T02:23:00.4008510Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-22T02:23:00.4008601Z               "line": 17
2026-06-22T02:23:00.4008683Z             }
2026-06-22T02:23:00.4008758Z           ]
2026-06-22T02:23:00.4008844Z         },
2026-06-22T02:23:00.4008925Z         "unit": {
2026-06-22T02:23:00.4009092Z           "complete": true,
2026-06-22T02:23:00.4009173Z           "evidence": [
2026-06-22T02:23:00.4009254Z             {
2026-06-22T02:23:00.4009365Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.4009459Z               "line": 982
2026-06-22T02:23:00.4009540Z             }
2026-06-22T02:23:00.4009622Z           ]
2026-06-22T02:23:00.4009698Z         }
2026-06-22T02:23:00.4009778Z       }
2026-06-22T02:23:00.4009855Z     },
2026-06-22T02:23:00.4009937Z     {
2026-06-22T02:23:00.4010041Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-22T02:23:00.4010288Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-22T02:23:00.4010370Z       "requiredStages": [
2026-06-22T02:23:00.4010565Z         "impl",
2026-06-22T02:23:00.4010646Z         "unit"
2026-06-22T02:23:00.4010731Z       ],
2026-06-22T02:23:00.4010904Z       "stages": {
2026-06-22T02:23:00.4010984Z         "doc": {
2026-06-22T02:23:00.4011070Z           "complete": false,
2026-06-22T02:23:00.4011155Z           "evidence": []
2026-06-22T02:23:00.4011238Z         },
2026-06-22T02:23:00.4011323Z         "impl": {
2026-06-22T02:23:00.4011413Z           "complete": true,
2026-06-22T02:23:00.4011499Z           "evidence": [
2026-06-22T02:23:00.4011577Z             {
2026-06-22T02:23:00.4011695Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.4011780Z               "line": 405
2026-06-22T02:23:00.4011858Z             },
2026-06-22T02:23:00.4011938Z             {
2026-06-22T02:23:00.4012047Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4012133Z               "line": 409
2026-06-22T02:23:00.4012211Z             },
2026-06-22T02:23:00.4012304Z             {
2026-06-22T02:23:00.4012413Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.4012499Z               "line": 156
2026-06-22T02:23:00.4012580Z             }
2026-06-22T02:23:00.4012664Z           ]
2026-06-22T02:23:00.4012744Z         },
2026-06-22T02:23:00.4012821Z         "int": {
2026-06-22T02:23:00.4012917Z           "complete": false,
2026-06-22T02:23:00.4013003Z           "evidence": []
2026-06-22T02:23:00.4013083Z         },
2026-06-22T02:23:00.4013165Z         "unit": {
2026-06-22T02:23:00.4013251Z           "complete": true,
2026-06-22T02:23:00.4013341Z           "evidence": [
2026-06-22T02:23:00.4013422Z             {
2026-06-22T02:23:00.4013537Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4013617Z               "line": 865
2026-06-22T02:23:00.4013698Z             },
2026-06-22T02:23:00.4013766Z             {
2026-06-22T02:23:00.4013885Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4013975Z               "line": 879
2026-06-22T02:23:00.4014051Z             },
2026-06-22T02:23:00.4014133Z             {
2026-06-22T02:23:00.4014247Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4014337Z               "line": 898
2026-06-22T02:23:00.4014420Z             },
2026-06-22T02:23:00.4014500Z             {
2026-06-22T02:23:00.4014624Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4014701Z               "line": 915
2026-06-22T02:23:00.4014782Z             },
2026-06-22T02:23:00.4014862Z             {
2026-06-22T02:23:00.4014986Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:23:00.4015069Z               "line": 441
2026-06-22T02:23:00.4015153Z             }
2026-06-22T02:23:00.4015233Z           ]
2026-06-22T02:23:00.4015304Z         }
2026-06-22T02:23:00.4015386Z       }
2026-06-22T02:23:00.4015470Z     },
2026-06-22T02:23:00.4015550Z     {
2026-06-22T02:23:00.4015655Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-22T02:23:00.4025356Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-22T02:23:00.4025704Z       "requiredStages": [
2026-06-22T02:23:00.4025779Z         "doc",
2026-06-22T02:23:00.4025859Z         "impl",
2026-06-22T02:23:00.4025941Z         "unit",
2026-06-22T02:23:00.4026021Z         "int"
2026-06-22T02:23:00.4026101Z       ],
2026-06-22T02:23:00.4026176Z       "stages": {
2026-06-22T02:23:00.4026268Z         "doc": {
2026-06-22T02:23:00.4026354Z           "complete": true,
2026-06-22T02:23:00.4026449Z           "evidence": [
2026-06-22T02:23:00.4026530Z             {
2026-06-22T02:23:00.4026626Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4026716Z               "line": 420
2026-06-22T02:23:00.4026787Z             },
2026-06-22T02:23:00.4026864Z             {
2026-06-22T02:23:00.4026969Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.4027055Z               "line": 402
2026-06-22T02:23:00.4027139Z             }
2026-06-22T02:23:00.4027227Z           ]
2026-06-22T02:23:00.4027307Z         },
2026-06-22T02:23:00.4027388Z         "impl": {
2026-06-22T02:23:00.4027479Z           "complete": true,
2026-06-22T02:23:00.4027565Z           "evidence": [
2026-06-22T02:23:00.4027646Z             {
2026-06-22T02:23:00.4027755Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4027832Z               "line": 797
2026-06-22T02:23:00.4027918Z             },
2026-06-22T02:23:00.4027993Z             {
2026-06-22T02:23:00.4028108Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4028191Z               "line": 822
2026-06-22T02:23:00.4028271Z             },
2026-06-22T02:23:00.4028360Z             {
2026-06-22T02:23:00.4028464Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4028555Z               "line": 839
2026-06-22T02:23:00.4028635Z             },
2026-06-22T02:23:00.4028714Z             {
2026-06-22T02:23:00.4028830Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4029087Z               "line": 854
2026-06-22T02:23:00.4029174Z             },
2026-06-22T02:23:00.4029330Z             {
2026-06-22T02:23:00.4029469Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4029550Z               "line": 874
2026-06-22T02:23:00.4029631Z             },
2026-06-22T02:23:00.4029711Z             {
2026-06-22T02:23:00.4029817Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4029902Z               "line": 964
2026-06-22T02:23:00.4029983Z             },
2026-06-22T02:23:00.4030064Z             {
2026-06-22T02:23:00.4030170Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4030256Z               "line": 1016
2026-06-22T02:23:00.4030336Z             },
2026-06-22T02:23:00.4030409Z             {
2026-06-22T02:23:00.4030522Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4030599Z               "line": 1075
2026-06-22T02:23:00.4030685Z             },
2026-06-22T02:23:00.4030767Z             {
2026-06-22T02:23:00.4030889Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.4030985Z               "line": 527
2026-06-22T02:23:00.4031067Z             }
2026-06-22T02:23:00.4031148Z           ]
2026-06-22T02:23:00.4031222Z         },
2026-06-22T02:23:00.4031313Z         "int": {
2026-06-22T02:23:00.4031394Z           "complete": true,
2026-06-22T02:23:00.4031476Z           "evidence": [
2026-06-22T02:23:00.4031560Z             {
2026-06-22T02:23:00.4031670Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:23:00.4031762Z               "line": 35
2026-06-22T02:23:00.4031843Z             },
2026-06-22T02:23:00.4031918Z             {
2026-06-22T02:23:00.4032034Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:23:00.4032123Z               "line": 569
2026-06-22T02:23:00.4032195Z             },
2026-06-22T02:23:00.4032271Z             {
2026-06-22T02:23:00.4032387Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:23:00.4032476Z               "line": 590
2026-06-22T02:23:00.4032561Z             }
2026-06-22T02:23:00.4032639Z           ]
2026-06-22T02:23:00.4032725Z         },
2026-06-22T02:23:00.4032810Z         "unit": {
2026-06-22T02:23:00.4032896Z           "complete": true,
2026-06-22T02:23:00.4032978Z           "evidence": [
2026-06-22T02:23:00.4033063Z             {
2026-06-22T02:23:00.4033177Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4033258Z               "line": 1202
2026-06-22T02:23:00.4033341Z             },
2026-06-22T02:23:00.4033425Z             {
2026-06-22T02:23:00.4033534Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4033615Z               "line": 1246
2026-06-22T02:23:00.4033691Z             },
2026-06-22T02:23:00.4033770Z             {
2026-06-22T02:23:00.4033883Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4033966Z               "line": 1260
2026-06-22T02:23:00.4034057Z             },
2026-06-22T02:23:00.4034127Z             {
2026-06-22T02:23:00.4034247Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4034333Z               "line": 1278
2026-06-22T02:23:00.4034418Z             },
2026-06-22T02:23:00.4034499Z             {
2026-06-22T02:23:00.4034605Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4034690Z               "line": 1302
2026-06-22T02:23:00.4034766Z             },
2026-06-22T02:23:00.4034852Z             {
2026-06-22T02:23:00.4034958Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4035039Z               "line": 1529
2026-06-22T02:23:00.4035114Z             }
2026-06-22T02:23:00.4035196Z           ]
2026-06-22T02:23:00.4035273Z         }
2026-06-22T02:23:00.4035353Z       }
2026-06-22T02:23:00.4035434Z     },
2026-06-22T02:23:00.4035516Z     {
2026-06-22T02:23:00.4035620Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-22T02:23:00.4037806Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-22T02:23:00.4037972Z       "requiredStages": [
2026-06-22T02:23:00.4038053Z         "unit",
2026-06-22T02:23:00.4038135Z         "int"
2026-06-22T02:23:00.4038215Z       ],
2026-06-22T02:23:00.4038296Z       "stages": {
2026-06-22T02:23:00.4038378Z         "doc": {
2026-06-22T02:23:00.4038483Z           "complete": true,
2026-06-22T02:23:00.4038563Z           "evidence": [
2026-06-22T02:23:00.4038649Z             {
2026-06-22T02:23:00.4038751Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.4038831Z               "line": 381
2026-06-22T02:23:00.4038911Z             }
2026-06-22T02:23:00.4039044Z           ]
2026-06-22T02:23:00.4039129Z         },
2026-06-22T02:23:00.4039213Z         "impl": {
2026-06-22T02:23:00.4039289Z           "complete": true,
2026-06-22T02:23:00.4039375Z           "evidence": [
2026-06-22T02:23:00.4039453Z             {
2026-06-22T02:23:00.4039571Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4039652Z               "line": 100
2026-06-22T02:23:00.4039734Z             }
2026-06-22T02:23:00.4039814Z           ]
2026-06-22T02:23:00.4039900Z         },
2026-06-22T02:23:00.4039986Z         "int": {
2026-06-22T02:23:00.4040067Z           "complete": true,
2026-06-22T02:23:00.4040158Z           "evidence": [
2026-06-22T02:23:00.4040238Z             {
2026-06-22T02:23:00.4040354Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4040439Z               "line": 1045
2026-06-22T02:23:00.4040525Z             }
2026-06-22T02:23:00.4040606Z           ]
2026-06-22T02:23:00.4040687Z         },
2026-06-22T02:23:00.4040768Z         "unit": {
2026-06-22T02:23:00.4040849Z           "complete": true,
2026-06-22T02:23:00.4043485Z           "evidence": [
2026-06-22T02:23:00.4043581Z             {
2026-06-22T02:23:00.4043708Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4043800Z               "line": 2270
2026-06-22T02:23:00.4043886Z             }
2026-06-22T02:23:00.4043971Z           ]
2026-06-22T02:23:00.4044051Z         }
2026-06-22T02:23:00.4044136Z       }
2026-06-22T02:23:00.4044223Z     },
2026-06-22T02:23:00.4044302Z     {
2026-06-22T02:23:00.4044425Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-22T02:23:00.4048566Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-22T02:23:00.4048913Z       "requiredStages": [
2026-06-22T02:23:00.4049081Z         "doc",
2026-06-22T02:23:00.4049161Z         "impl",
2026-06-22T02:23:00.4049238Z         "unit",
2026-06-22T02:23:00.4049321Z         "int"
2026-06-22T02:23:00.4049410Z       ],
2026-06-22T02:23:00.4049499Z       "stages": {
2026-06-22T02:23:00.4049580Z         "doc": {
2026-06-22T02:23:00.4049675Z           "complete": true,
2026-06-22T02:23:00.4049755Z           "evidence": [
2026-06-22T02:23:00.4049835Z             {
2026-06-22T02:23:00.4049935Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4050017Z               "line": 342
2026-06-22T02:23:00.4050107Z             }
2026-06-22T02:23:00.4050187Z           ]
2026-06-22T02:23:00.4050270Z         },
2026-06-22T02:23:00.4050365Z         "impl": {
2026-06-22T02:23:00.4050450Z           "complete": true,
2026-06-22T02:23:00.4050536Z           "evidence": [
2026-06-22T02:23:00.4050609Z             {
2026-06-22T02:23:00.4050732Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.4050817Z               "line": 333
2026-06-22T02:23:00.4050900Z             },
2026-06-22T02:23:00.4050975Z             {
2026-06-22T02:23:00.4051085Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.4051170Z               "line": 892
2026-06-22T02:23:00.4051248Z             }
2026-06-22T02:23:00.4051323Z           ]
2026-06-22T02:23:00.4051409Z         },
2026-06-22T02:23:00.4051490Z         "int": {
2026-06-22T02:23:00.4051572Z           "complete": true,
2026-06-22T02:23:00.4051657Z           "evidence": [
2026-06-22T02:23:00.4051738Z             {
2026-06-22T02:23:00.4051896Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.4051985Z               "line": 787
2026-06-22T02:23:00.4052072Z             },
2026-06-22T02:23:00.4052154Z             {
2026-06-22T02:23:00.4052296Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.4052376Z               "line": 2053
2026-06-22T02:23:00.4052461Z             }
2026-06-22T02:23:00.4052538Z           ]
2026-06-22T02:23:00.4052620Z         },
2026-06-22T02:23:00.4052700Z         "unit": {
2026-06-22T02:23:00.4052785Z           "complete": true,
2026-06-22T02:23:00.4052863Z           "evidence": [
2026-06-22T02:23:00.4052939Z             {
2026-06-22T02:23:00.4053057Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.4053140Z               "line": 1682
2026-06-22T02:23:00.4053225Z             }
2026-06-22T02:23:00.4053301Z           ]
2026-06-22T02:23:00.4053376Z         }
2026-06-22T02:23:00.4053454Z       }
2026-06-22T02:23:00.4053530Z     },
2026-06-22T02:23:00.4053611Z     {
2026-06-22T02:23:00.4053788Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-22T02:23:00.4059011Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-22T02:23:00.4059373Z       "requiredStages": [
2026-06-22T02:23:00.4059465Z         "impl",
2026-06-22T02:23:00.4059551Z         "unit",
2026-06-22T02:23:00.4059641Z         "int"
2026-06-22T02:23:00.4059717Z       ],
2026-06-22T02:23:00.4059793Z       "stages": {
2026-06-22T02:23:00.4059885Z         "doc": {
2026-06-22T02:23:00.4059979Z           "complete": false,
2026-06-22T02:23:00.4060060Z           "evidence": []
2026-06-22T02:23:00.4060145Z         },
2026-06-22T02:23:00.4060226Z         "impl": {
2026-06-22T02:23:00.4060310Z           "complete": true,
2026-06-22T02:23:00.4060391Z           "evidence": [
2026-06-22T02:23:00.4060472Z             {
2026-06-22T02:23:00.4060592Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4060677Z               "line": 322
2026-06-22T02:23:00.4060752Z             },
2026-06-22T02:23:00.4060820Z             {
2026-06-22T02:23:00.4060935Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4061015Z               "line": 744
2026-06-22T02:23:00.4061101Z             }
2026-06-22T02:23:00.4061178Z           ]
2026-06-22T02:23:00.4061259Z         },
2026-06-22T02:23:00.4061349Z         "int": {
2026-06-22T02:23:00.4061431Z           "complete": true,
2026-06-22T02:23:00.4061512Z           "evidence": [
2026-06-22T02:23:00.4061588Z             {
2026-06-22T02:23:00.4061730Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.4061817Z               "line": 786
2026-06-22T02:23:00.4061897Z             }
2026-06-22T02:23:00.4061983Z           ]
2026-06-22T02:23:00.4062065Z         },
2026-06-22T02:23:00.4062146Z         "unit": {
2026-06-22T02:23:00.4062226Z           "complete": true,
2026-06-22T02:23:00.4062307Z           "evidence": [
2026-06-22T02:23:00.4062389Z             {
2026-06-22T02:23:00.4062494Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4062574Z               "line": 2485
2026-06-22T02:23:00.4062656Z             },
2026-06-22T02:23:00.4062743Z             {
2026-06-22T02:23:00.4062860Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4062945Z               "line": 2554
2026-06-22T02:23:00.4063026Z             }
2026-06-22T02:23:00.4063103Z           ]
2026-06-22T02:23:00.4063185Z         }
2026-06-22T02:23:00.4063265Z       }
2026-06-22T02:23:00.4063341Z     },
2026-06-22T02:23:00.4063413Z     {
2026-06-22T02:23:00.4063514Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-22T02:23:00.4064358Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-22T02:23:00.4065176Z       "requiredStages": [
2026-06-22T02:23:00.4065371Z         "doc",
2026-06-22T02:23:00.4065540Z         "impl",
2026-06-22T02:23:00.4065713Z         "unit"
2026-06-22T02:23:00.4065874Z       ],
2026-06-22T02:23:00.4066032Z       "stages": {
2026-06-22T02:23:00.4066295Z         "doc": {
2026-06-22T02:23:00.4066465Z           "complete": true,
2026-06-22T02:23:00.4066672Z           "evidence": [
2026-06-22T02:23:00.4066924Z             {
2026-06-22T02:23:00.4067114Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.4067352Z               "line": 366
2026-06-22T02:23:00.4067531Z             }
2026-06-22T02:23:00.4067691Z           ]
2026-06-22T02:23:00.4067850Z         },
2026-06-22T02:23:00.4068010Z         "impl": {
2026-06-22T02:23:00.4068186Z           "complete": true,
2026-06-22T02:23:00.4068384Z           "evidence": [
2026-06-22T02:23:00.4068557Z             {
2026-06-22T02:23:00.4068756Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:23:00.4069080Z               "line": 87
2026-06-22T02:23:00.4069257Z             },
2026-06-22T02:23:00.4069409Z             {
2026-06-22T02:23:00.4069610Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.4069844Z               "line": 203
2026-06-22T02:23:00.4070034Z             },
2026-06-22T02:23:00.4070178Z             {
2026-06-22T02:23:00.4070373Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4070629Z               "line": 55
2026-06-22T02:23:00.4070810Z             },
2026-06-22T02:23:00.4070965Z             {
2026-06-22T02:23:00.4071167Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.4071428Z               "line": 31
2026-06-22T02:23:00.4071613Z             },
2026-06-22T02:23:00.4071776Z             {
2026-06-22T02:23:00.4071966Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.4072205Z               "line": 446
2026-06-22T02:23:00.4072383Z             },
2026-06-22T02:23:00.4072548Z             {
2026-06-22T02:23:00.4072739Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4072983Z               "line": 95
2026-06-22T02:23:00.4073163Z             },
2026-06-22T02:23:00.4073313Z             {
2026-06-22T02:23:00.4073496Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.4073749Z               "line": 29
2026-06-22T02:23:00.4073930Z             },
2026-06-22T02:23:00.4074088Z             {
2026-06-22T02:23:00.4074279Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.4074526Z               "line": 104
2026-06-22T02:23:00.4074698Z             },
2026-06-22T02:23:00.4074865Z             {
2026-06-22T02:23:00.4075070Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4075323Z               "line": 208
2026-06-22T02:23:00.4075509Z             },
2026-06-22T02:23:00.4075670Z             {
2026-06-22T02:23:00.4075865Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:23:00.4076105Z               "line": 28
2026-06-22T02:23:00.4076283Z             },
2026-06-22T02:23:00.4076434Z             {
2026-06-22T02:23:00.4076626Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:23:00.4076869Z               "line": 74
2026-06-22T02:23:00.4077054Z             },
2026-06-22T02:23:00.4077217Z             {
2026-06-22T02:23:00.4077412Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:23:00.4077660Z               "line": 32
2026-06-22T02:23:00.4077828Z             },
2026-06-22T02:23:00.4077989Z             {
2026-06-22T02:23:00.4078167Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4078400Z               "line": 40
2026-06-22T02:23:00.4078589Z             },
2026-06-22T02:23:00.4078751Z             {
2026-06-22T02:23:00.4078934Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4079263Z               "line": 184
2026-06-22T02:23:00.4079460Z             },
2026-06-22T02:23:00.4079606Z             {
2026-06-22T02:23:00.4079793Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.4080070Z               "line": 61
2026-06-22T02:23:00.4080289Z             },
2026-06-22T02:23:00.4080451Z             {
2026-06-22T02:23:00.4080738Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.4080972Z               "line": 131
2026-06-22T02:23:00.4081265Z             },
2026-06-22T02:23:00.4081426Z             {
2026-06-22T02:23:00.4081607Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:23:00.4081835Z               "line": 223
2026-06-22T02:23:00.4082017Z             },
2026-06-22T02:23:00.4082178Z             {
2026-06-22T02:23:00.4082365Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:23:00.4082594Z               "line": 37
2026-06-22T02:23:00.4082760Z             },
2026-06-22T02:23:00.4082909Z             {
2026-06-22T02:23:00.4083098Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.4083342Z               "line": 38
2026-06-22T02:23:00.4083524Z             },
2026-06-22T02:23:00.4083680Z             {
2026-06-22T02:23:00.4083863Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:23:00.4084099Z               "line": 36
2026-06-22T02:23:00.4084286Z             },
2026-06-22T02:23:00.4084437Z             {
2026-06-22T02:23:00.4084634Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:23:00.4084896Z               "line": 40
2026-06-22T02:23:00.4085062Z             }
2026-06-22T02:23:00.4085220Z           ]
2026-06-22T02:23:00.4085367Z         },
2026-06-22T02:23:00.4085521Z         "int": {
2026-06-22T02:23:00.4085697Z           "complete": false,
2026-06-22T02:23:00.4085892Z           "evidence": []
2026-06-22T02:23:00.4086064Z         },
2026-06-22T02:23:00.4086220Z         "unit": {
2026-06-22T02:23:00.4086391Z           "complete": true,
2026-06-22T02:23:00.4086585Z           "evidence": [
2026-06-22T02:23:00.4086767Z             {
2026-06-22T02:23:00.4086966Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4087214Z               "line": 212
2026-06-22T02:23:00.4087392Z             },
2026-06-22T02:23:00.4087557Z             {
2026-06-22T02:23:00.4087768Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T02:23:00.4088026Z               "line": 136
2026-06-22T02:23:00.4088201Z             },
2026-06-22T02:23:00.4088374Z             {
2026-06-22T02:23:00.4088564Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:23:00.4088807Z               "line": 685
2026-06-22T02:23:00.4089065Z             },
2026-06-22T02:23:00.4089225Z             {
2026-06-22T02:23:00.4089419Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:23:00.4089677Z               "line": 224
2026-06-22T02:23:00.4089852Z             },
2026-06-22T02:23:00.4090001Z             {
2026-06-22T02:23:00.4090195Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:23:00.4090434Z               "line": 206
2026-06-22T02:23:00.4090611Z             },
2026-06-22T02:23:00.4090759Z             {
2026-06-22T02:23:00.4090950Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:23:00.4091183Z               "line": 112
2026-06-22T02:23:00.4091359Z             },
2026-06-22T02:23:00.4091523Z             {
2026-06-22T02:23:00.4091711Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:23:00.4091977Z               "line": 157
2026-06-22T02:23:00.4092157Z             },
2026-06-22T02:23:00.4092306Z             {
2026-06-22T02:23:00.4092491Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.4092738Z               "line": 215
2026-06-22T02:23:00.4092925Z             },
2026-06-22T02:23:00.4093077Z             {
2026-06-22T02:23:00.4093263Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:23:00.4093503Z               "line": 141
2026-06-22T02:23:00.4093678Z             },
2026-06-22T02:23:00.4093846Z             {
2026-06-22T02:23:00.4094031Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:23:00.4094269Z               "line": 162
2026-06-22T02:23:00.4094457Z             }
2026-06-22T02:23:00.4094607Z           ]
2026-06-22T02:23:00.4094764Z         }
2026-06-22T02:23:00.4095021Z       }
2026-06-22T02:23:00.4095175Z     },
2026-06-22T02:23:00.4095331Z     {
2026-06-22T02:23:00.4095622Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-22T02:23:00.4097603Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-22T02:23:00.4099333Z       "requiredStages": [
2026-06-22T02:23:00.4099520Z         "doc",
2026-06-22T02:23:00.4099691Z         "impl",
2026-06-22T02:23:00.4099867Z         "unit",
2026-06-22T02:23:00.4100022Z         "int"
2026-06-22T02:23:00.4100179Z       ],
2026-06-22T02:23:00.4100351Z       "stages": {
2026-06-22T02:23:00.4100509Z         "doc": {
2026-06-22T02:23:00.4100675Z           "complete": true,
2026-06-22T02:23:00.4100909Z           "evidence": [
2026-06-22T02:23:00.4101080Z             {
2026-06-22T02:23:00.4101276Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.4101510Z               "line": 250
2026-06-22T02:23:00.4101690Z             }
2026-06-22T02:23:00.4101858Z           ]
2026-06-22T02:23:00.4102014Z         },
2026-06-22T02:23:00.4102173Z         "impl": {
2026-06-22T02:23:00.4102347Z           "complete": true,
2026-06-22T02:23:00.4102537Z           "evidence": [
2026-06-22T02:23:00.4102722Z             {
2026-06-22T02:23:00.4102903Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:23:00.4103138Z               "line": 135
2026-06-22T02:23:00.4103323Z             },
2026-06-22T02:23:00.4103490Z             {
2026-06-22T02:23:00.4103676Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:23:00.4103909Z               "line": 157
2026-06-22T02:23:00.4104082Z             }
2026-06-22T02:23:00.4104247Z           ]
2026-06-22T02:23:00.4104392Z         },
2026-06-22T02:23:00.4104562Z         "int": {
2026-06-22T02:23:00.4104758Z           "complete": true,
2026-06-22T02:23:00.4104955Z           "evidence": [
2026-06-22T02:23:00.4105125Z             {
2026-06-22T02:23:00.4105310Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-22T02:23:00.4105562Z               "line": 15
2026-06-22T02:23:00.4105745Z             }
2026-06-22T02:23:00.4105901Z           ]
2026-06-22T02:23:00.4106044Z         },
2026-06-22T02:23:00.4106206Z         "unit": {
2026-06-22T02:23:00.4106383Z           "complete": true,
2026-06-22T02:23:00.4106589Z           "evidence": [
2026-06-22T02:23:00.4106764Z             {
2026-06-22T02:23:00.4106952Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-22T02:23:00.4107204Z               "line": 233
2026-06-22T02:23:00.4107379Z             }
2026-06-22T02:23:00.4107540Z           ]
2026-06-22T02:23:00.4107695Z         }
2026-06-22T02:23:00.4107848Z       }
2026-06-22T02:23:00.4108010Z     },
2026-06-22T02:23:00.4108168Z     {
2026-06-22T02:23:00.4108349Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-22T02:23:00.4108659Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-22T02:23:00.4109016Z       "requiredStages": [
2026-06-22T02:23:00.4109212Z         "impl",
2026-06-22T02:23:00.4109388Z         "unit"
2026-06-22T02:23:00.4109550Z       ],
2026-06-22T02:23:00.4109717Z       "stages": {
2026-06-22T02:23:00.4109889Z         "doc": {
2026-06-22T02:23:00.4110057Z           "complete": false,
2026-06-22T02:23:00.4110251Z           "evidence": []
2026-06-22T02:23:00.4110441Z         },
2026-06-22T02:23:00.4110601Z         "impl": {
2026-06-22T02:23:00.4110778Z           "complete": true,
2026-06-22T02:23:00.4110972Z           "evidence": [
2026-06-22T02:23:00.4111263Z             {
2026-06-22T02:23:00.4111455Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4111807Z               "line": 95
2026-06-22T02:23:00.4111984Z             },
2026-06-22T02:23:00.4112155Z             {
2026-06-22T02:23:00.4112338Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4112565Z               "line": 117
2026-06-22T02:23:00.4112743Z             }
2026-06-22T02:23:00.4112893Z           ]
2026-06-22T02:23:00.4113050Z         },
2026-06-22T02:23:00.4113200Z         "int": {
2026-06-22T02:23:00.4113374Z           "complete": false,
2026-06-22T02:23:00.4113568Z           "evidence": []
2026-06-22T02:23:00.4113735Z         },
2026-06-22T02:23:00.4113887Z         "unit": {
2026-06-22T02:23:00.4114059Z           "complete": true,
2026-06-22T02:23:00.4114251Z           "evidence": [
2026-06-22T02:23:00.4114422Z             {
2026-06-22T02:23:00.4114604Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4114851Z               "line": 250
2026-06-22T02:23:00.4115032Z             },
2026-06-22T02:23:00.4115195Z             {
2026-06-22T02:23:00.4115379Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.4115615Z               "line": 412
2026-06-22T02:23:00.4115789Z             },
2026-06-22T02:23:00.4115952Z             {
2026-06-22T02:23:00.4116141Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4116380Z               "line": 611
2026-06-22T02:23:00.4116558Z             },
2026-06-22T02:23:00.4116713Z             {
2026-06-22T02:23:00.4116896Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4117135Z               "line": 669
2026-06-22T02:23:00.4117315Z             }
2026-06-22T02:23:00.4117468Z           ]
2026-06-22T02:23:00.4117619Z         }
2026-06-22T02:23:00.4117783Z       }
2026-06-22T02:23:00.4121890Z     },
2026-06-22T02:23:00.4122063Z     {
2026-06-22T02:23:00.4122248Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-22T02:23:00.4124873Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-22T02:23:00.4127056Z       "requiredStages": [
2026-06-22T02:23:00.4127246Z         "impl",
2026-06-22T02:23:00.4127423Z         "unit",
2026-06-22T02:23:00.4127584Z         "int"
2026-06-22T02:23:00.4127733Z       ],
2026-06-22T02:23:00.4127899Z       "stages": {
2026-06-22T02:23:00.4128067Z         "doc": {
2026-06-22T02:23:00.4128232Z           "complete": false,
2026-06-22T02:23:00.4128439Z           "evidence": []
2026-06-22T02:23:00.4128608Z         },
2026-06-22T02:23:00.4128765Z         "impl": {
2026-06-22T02:23:00.4129036Z           "complete": true,
2026-06-22T02:23:00.4129221Z           "evidence": [
2026-06-22T02:23:00.4129402Z             {
2026-06-22T02:23:00.4129603Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4129850Z               "line": 925
2026-06-22T02:23:00.4130032Z             },
2026-06-22T02:23:00.4130179Z             {
2026-06-22T02:23:00.4130370Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4130610Z               "line": 994
2026-06-22T02:23:00.4130789Z             }
2026-06-22T02:23:00.4130948Z           ]
2026-06-22T02:23:00.4131249Z         },
2026-06-22T02:23:00.4131409Z         "int": {
2026-06-22T02:23:00.4131580Z           "complete": true,
2026-06-22T02:23:00.4131869Z           "evidence": [
2026-06-22T02:23:00.4132045Z             {
2026-06-22T02:23:00.4132232Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:23:00.4132480Z               "line": 187
2026-06-22T02:23:00.4132660Z             },
2026-06-22T02:23:00.4132818Z             {
2026-06-22T02:23:00.4133008Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:23:00.4133251Z               "line": 348
2026-06-22T02:23:00.4133419Z             }
2026-06-22T02:23:00.4133576Z           ]
2026-06-22T02:23:00.4133719Z         },
2026-06-22T02:23:00.4133881Z         "unit": {
2026-06-22T02:23:00.4134056Z           "complete": true,
2026-06-22T02:23:00.4134250Z           "evidence": [
2026-06-22T02:23:00.4134426Z             {
2026-06-22T02:23:00.4134607Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4134851Z               "line": 1206
2026-06-22T02:23:00.4135032Z             },
2026-06-22T02:23:00.4135189Z             {
2026-06-22T02:23:00.4135366Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4135584Z               "line": 8116
2026-06-22T02:23:00.4135766Z             }
2026-06-22T02:23:00.4135919Z           ]
2026-06-22T02:23:00.4136067Z         }
2026-06-22T02:23:00.4136224Z       }
2026-06-22T02:23:00.4136377Z     },
2026-06-22T02:23:00.4136534Z     {
2026-06-22T02:23:00.4136706Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-22T02:23:00.4137005Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-22T02:23:00.4137310Z       "requiredStages": [
2026-06-22T02:23:00.4137491Z         "impl",
2026-06-22T02:23:00.4137649Z         "unit"
2026-06-22T02:23:00.4137810Z       ],
2026-06-22T02:23:00.4137959Z       "stages": {
2026-06-22T02:23:00.4138135Z         "doc": {
2026-06-22T02:23:00.4138307Z           "complete": false,
2026-06-22T02:23:00.4138492Z           "evidence": []
2026-06-22T02:23:00.4138670Z         },
2026-06-22T02:23:00.4138831Z         "impl": {
2026-06-22T02:23:00.4139078Z           "complete": true,
2026-06-22T02:23:00.4139273Z           "evidence": [
2026-06-22T02:23:00.4139452Z             {
2026-06-22T02:23:00.4139644Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4139877Z               "line": 262
2026-06-22T02:23:00.4140057Z             },
2026-06-22T02:23:00.4140216Z             {
2026-06-22T02:23:00.4140396Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4140630Z               "line": 307
2026-06-22T02:23:00.4140802Z             },
2026-06-22T02:23:00.4140959Z             {
2026-06-22T02:23:00.4141141Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4141373Z               "line": 319
2026-06-22T02:23:00.4141546Z             }
2026-06-22T02:23:00.4141698Z           ]
2026-06-22T02:23:00.4141847Z         },
2026-06-22T02:23:00.4142002Z         "int": {
2026-06-22T02:23:00.4142174Z           "complete": false,
2026-06-22T02:23:00.4142357Z           "evidence": []
2026-06-22T02:23:00.4142520Z         },
2026-06-22T02:23:00.4142672Z         "unit": {
2026-06-22T02:23:00.4142844Z           "complete": true,
2026-06-22T02:23:00.4143015Z           "evidence": [
2026-06-22T02:23:00.4143193Z             {
2026-06-22T02:23:00.4143374Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4143602Z               "line": 455
2026-06-22T02:23:00.4143774Z             },
2026-06-22T02:23:00.4143936Z             {
2026-06-22T02:23:00.4144117Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4144352Z               "line": 499
2026-06-22T02:23:00.4144521Z             }
2026-06-22T02:23:00.4144674Z           ]
2026-06-22T02:23:00.4144819Z         }
2026-06-22T02:23:00.4144962Z       }
2026-06-22T02:23:00.4145115Z     },
2026-06-22T02:23:00.4145263Z     {
2026-06-22T02:23:00.4145435Z       "id": "REQ-HOST-RUN-1",
2026-06-22T02:23:00.4148056Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-22T02:23:00.4150189Z       "requiredStages": [
2026-06-22T02:23:00.4150370Z         "impl",
2026-06-22T02:23:00.4150537Z         "unit",
2026-06-22T02:23:00.4150704Z         "int"
2026-06-22T02:23:00.4150852Z       ],
2026-06-22T02:23:00.4151018Z       "stages": {
2026-06-22T02:23:00.4151176Z         "doc": {
2026-06-22T02:23:00.4151347Z           "complete": false,
2026-06-22T02:23:00.4151548Z           "evidence": []
2026-06-22T02:23:00.4151716Z         },
2026-06-22T02:23:00.4151867Z         "impl": {
2026-06-22T02:23:00.4152045Z           "complete": true,
2026-06-22T02:23:00.4152234Z           "evidence": [
2026-06-22T02:23:00.4152407Z             {
2026-06-22T02:23:00.4152605Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4152855Z               "line": 30
2026-06-22T02:23:00.4153028Z             },
2026-06-22T02:23:00.4153189Z             {
2026-06-22T02:23:00.4153385Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4153629Z               "line": 76
2026-06-22T02:23:00.4153804Z             },
2026-06-22T02:23:00.4153963Z             {
2026-06-22T02:23:00.4154171Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4154409Z               "line": 181
2026-06-22T02:23:00.4154607Z             },
2026-06-22T02:23:00.4154753Z             {
2026-06-22T02:23:00.4154917Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4155157Z               "line": 1266
2026-06-22T02:23:00.4155333Z             }
2026-06-22T02:23:00.4155493Z           ]
2026-06-22T02:23:00.4155653Z         },
2026-06-22T02:23:00.4155803Z         "int": {
2026-06-22T02:23:00.4155976Z           "complete": true,
2026-06-22T02:23:00.4156167Z           "evidence": [
2026-06-22T02:23:00.4156343Z             {
2026-06-22T02:23:00.4156534Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4156781Z               "line": 288
2026-06-22T02:23:00.4156963Z             }
2026-06-22T02:23:00.4157111Z           ]
2026-06-22T02:23:00.4157253Z         },
2026-06-22T02:23:00.4157401Z         "unit": {
2026-06-22T02:23:00.4157572Z           "complete": true,
2026-06-22T02:23:00.4157760Z           "evidence": [
2026-06-22T02:23:00.4157934Z             {
2026-06-22T02:23:00.4158135Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4158387Z               "line": 229
2026-06-22T02:23:00.4158569Z             },
2026-06-22T02:23:00.4158726Z             {
2026-06-22T02:23:00.4158921Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4159236Z               "line": 296
2026-06-22T02:23:00.4159427Z             },
2026-06-22T02:23:00.4159579Z             {
2026-06-22T02:23:00.4159775Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4160014Z               "line": 419
2026-06-22T02:23:00.4160185Z             }
2026-06-22T02:23:00.4160341Z           ]
2026-06-22T02:23:00.4160492Z         }
2026-06-22T02:23:00.4160649Z       }
2026-06-22T02:23:00.4160788Z     },
2026-06-22T02:23:00.4160944Z     {
2026-06-22T02:23:00.4161107Z       "id": "REQ-HOST-RUN-2",
2026-06-22T02:23:00.4162867Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-22T02:23:00.4164814Z       "requiredStages": [
2026-06-22T02:23:00.4164989Z         "impl",
2026-06-22T02:23:00.4165162Z         "unit",
2026-06-22T02:23:00.4165323Z         "int"
2026-06-22T02:23:00.4165486Z       ],
2026-06-22T02:23:00.4165651Z       "stages": {
2026-06-22T02:23:00.4165808Z         "doc": {
2026-06-22T02:23:00.4165978Z           "complete": false,
2026-06-22T02:23:00.4166169Z           "evidence": []
2026-06-22T02:23:00.4166359Z         },
2026-06-22T02:23:00.4166526Z         "impl": {
2026-06-22T02:23:00.4166702Z           "complete": true,
2026-06-22T02:23:00.4166899Z           "evidence": [
2026-06-22T02:23:00.4167070Z             {
2026-06-22T02:23:00.4167274Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4167528Z               "line": 182
2026-06-22T02:23:00.4167700Z             },
2026-06-22T02:23:00.4167866Z             {
2026-06-22T02:23:00.4168049Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:23:00.4168281Z               "line": 113
2026-06-22T02:23:00.4168452Z             }
2026-06-22T02:23:00.4168613Z           ]
2026-06-22T02:23:00.4168772Z         },
2026-06-22T02:23:00.4168933Z         "int": {
2026-06-22T02:23:00.4169185Z           "complete": true,
2026-06-22T02:23:00.4169367Z           "evidence": [
2026-06-22T02:23:00.4169543Z             {
2026-06-22T02:23:00.4169734Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4169988Z               "line": 575
2026-06-22T02:23:00.4170158Z             }
2026-06-22T02:23:00.4170321Z           ]
2026-06-22T02:23:00.4170497Z         },
2026-06-22T02:23:00.4170650Z         "unit": {
2026-06-22T02:23:00.4170820Z           "complete": true,
2026-06-22T02:23:00.4171014Z           "evidence": [
2026-06-22T02:23:00.4171185Z             {
2026-06-22T02:23:00.4171371Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:23:00.4171610Z               "line": 86
2026-06-22T02:23:00.4171780Z             }
2026-06-22T02:23:00.4171939Z           ]
2026-06-22T02:23:00.4172095Z         }
2026-06-22T02:23:00.4172244Z       }
2026-06-22T02:23:00.4172396Z     },
2026-06-22T02:23:00.4172549Z     {
2026-06-22T02:23:00.4172706Z       "id": "REQ-INFRA-1",
2026-06-22T02:23:00.4172982Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-22T02:23:00.4173292Z       "requiredStages": [],
2026-06-22T02:23:00.4173485Z       "stages": {
2026-06-22T02:23:00.4173654Z         "doc": {
2026-06-22T02:23:00.4173825Z           "complete": false,
2026-06-22T02:23:00.4174013Z           "evidence": []
2026-06-22T02:23:00.4174196Z         },
2026-06-22T02:23:00.4174347Z         "impl": {
2026-06-22T02:23:00.4174520Z           "complete": false,
2026-06-22T02:23:00.4174710Z           "evidence": []
2026-06-22T02:23:00.4174883Z         },
2026-06-22T02:23:00.4175030Z         "int": {
2026-06-22T02:23:00.4175201Z           "complete": false,
2026-06-22T02:23:00.4175393Z           "evidence": []
2026-06-22T02:23:00.4175573Z         },
2026-06-22T02:23:00.4175746Z         "unit": {
2026-06-22T02:23:00.4175917Z           "complete": false,
2026-06-22T02:23:00.4176108Z           "evidence": []
2026-06-22T02:23:00.4176282Z         }
2026-06-22T02:23:00.4176435Z       }
2026-06-22T02:23:00.4176580Z     },
2026-06-22T02:23:00.4176734Z     {
2026-06-22T02:23:00.4176885Z       "id": "REQ-INST-1",
2026-06-22T02:23:00.4177135Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-22T02:23:00.4177543Z       "requiredStages": [],
2026-06-22T02:23:00.4177730Z       "stages": {
2026-06-22T02:23:00.4177998Z         "doc": {
2026-06-22T02:23:00.4178168Z           "complete": false,
2026-06-22T02:23:00.4178360Z           "evidence": []
2026-06-22T02:23:00.4178536Z         },
2026-06-22T02:23:00.4178618Z         "impl": {
2026-06-22T02:23:00.4178698Z           "complete": false,
2026-06-22T02:23:00.4178779Z           "evidence": []
2026-06-22T02:23:00.4178866Z         },
2026-06-22T02:23:00.4179022Z         "int": {
2026-06-22T02:23:00.4179107Z           "complete": false,
2026-06-22T02:23:00.4179193Z           "evidence": []
2026-06-22T02:23:00.4179275Z         },
2026-06-22T02:23:00.4179351Z         "unit": {
2026-06-22T02:23:00.4179440Z           "complete": false,
2026-06-22T02:23:00.4179517Z           "evidence": []
2026-06-22T02:23:00.4179599Z         }
2026-06-22T02:23:00.4179680Z       }
2026-06-22T02:23:00.4179765Z     },
2026-06-22T02:23:00.4179847Z     {
2026-06-22T02:23:00.4179956Z       "id": "REQ-INST-10",
2026-06-22T02:23:00.4180151Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-22T02:23:00.4180257Z       "requiredStages": [
2026-06-22T02:23:00.4180338Z         "impl",
2026-06-22T02:23:00.4180423Z         "unit"
2026-06-22T02:23:00.4180510Z       ],
2026-06-22T02:23:00.4180595Z       "stages": {
2026-06-22T02:23:00.4180685Z         "doc": {
2026-06-22T02:23:00.4180761Z           "complete": false,
2026-06-22T02:23:00.4180849Z           "evidence": []
2026-06-22T02:23:00.4180919Z         },
2026-06-22T02:23:00.4181000Z         "impl": {
2026-06-22T02:23:00.4181081Z           "complete": true,
2026-06-22T02:23:00.4181164Z           "evidence": [
2026-06-22T02:23:00.4181248Z             {
2026-06-22T02:23:00.4181370Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4181447Z               "line": 648
2026-06-22T02:23:00.4181528Z             },
2026-06-22T02:23:00.4181616Z             {
2026-06-22T02:23:00.4181745Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4181831Z               "line": 725
2026-06-22T02:23:00.4181917Z             },
2026-06-22T02:23:00.4181998Z             {
2026-06-22T02:23:00.4182108Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:23:00.4182194Z               "line": 13
2026-06-22T02:23:00.4182279Z             },
2026-06-22T02:23:00.4182350Z             {
2026-06-22T02:23:00.4182457Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:23:00.4182542Z               "line": 67
2026-06-22T02:23:00.4182622Z             },
2026-06-22T02:23:00.4182704Z             {
2026-06-22T02:23:00.4182809Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4182890Z               "line": 18
2026-06-22T02:23:00.4182975Z             },
2026-06-22T02:23:00.4183047Z             {
2026-06-22T02:23:00.4183142Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4183223Z               "line": 444
2026-06-22T02:23:00.4183314Z             }
2026-06-22T02:23:00.4183392Z           ]
2026-06-22T02:23:00.4183481Z         },
2026-06-22T02:23:00.4183567Z         "int": {
2026-06-22T02:23:00.4183648Z           "complete": false,
2026-06-22T02:23:00.4183744Z           "evidence": []
2026-06-22T02:23:00.4183819Z         },
2026-06-22T02:23:00.4183910Z         "unit": {
2026-06-22T02:23:00.4183987Z           "complete": true,
2026-06-22T02:23:00.4184078Z           "evidence": [
2026-06-22T02:23:00.4184167Z             {
2026-06-22T02:23:00.4184276Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4184372Z               "line": 932
2026-06-22T02:23:00.4184446Z             },
2026-06-22T02:23:00.4184532Z             {
2026-06-22T02:23:00.4184646Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4184732Z               "line": 1309
2026-06-22T02:23:00.4184813Z             },
2026-06-22T02:23:00.4184893Z             {
2026-06-22T02:23:00.4185114Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4185194Z               "line": 1320
2026-06-22T02:23:00.4185366Z             },
2026-06-22T02:23:00.4185443Z             {
2026-06-22T02:23:00.4185566Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4185657Z               "line": 1336
2026-06-22T02:23:00.4185738Z             },
2026-06-22T02:23:00.4185824Z             {
2026-06-22T02:23:00.4185924Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4186020Z               "line": 1352
2026-06-22T02:23:00.4186100Z             },
2026-06-22T02:23:00.4186176Z             {
2026-06-22T02:23:00.4186287Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4186367Z               "line": 1374
2026-06-22T02:23:00.4186448Z             },
2026-06-22T02:23:00.4186520Z             {
2026-06-22T02:23:00.4186640Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4186739Z               "line": 1679
2026-06-22T02:23:00.4186819Z             },
2026-06-22T02:23:00.4186905Z             {
2026-06-22T02:23:00.4187023Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:23:00.4187112Z               "line": 130
2026-06-22T02:23:00.4187193Z             },
2026-06-22T02:23:00.4187275Z             {
2026-06-22T02:23:00.4187384Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:23:00.4187469Z               "line": 167
2026-06-22T02:23:00.4187542Z             },
2026-06-22T02:23:00.4187619Z             {
2026-06-22T02:23:00.4187732Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:23:00.4187813Z               "line": 175
2026-06-22T02:23:00.4187890Z             },
2026-06-22T02:23:00.4187975Z             {
2026-06-22T02:23:00.4188080Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:23:00.4188167Z               "line": 183
2026-06-22T02:23:00.4188248Z             },
2026-06-22T02:23:00.4188328Z             {
2026-06-22T02:23:00.4188438Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4188515Z               "line": 896
2026-06-22T02:23:00.4188605Z             }
2026-06-22T02:23:00.4188686Z           ]
2026-06-22T02:23:00.4188772Z         }
2026-06-22T02:23:00.4188844Z       }
2026-06-22T02:23:00.4188920Z     },
2026-06-22T02:23:00.4189082Z     {
2026-06-22T02:23:00.4189169Z       "id": "REQ-INST-11",
2026-06-22T02:23:00.4189382Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-22T02:23:00.4189465Z       "requiredStages": [
2026-06-22T02:23:00.4189550Z         "impl",
2026-06-22T02:23:00.4189629Z         "unit"
2026-06-22T02:23:00.4189710Z       ],
2026-06-22T02:23:00.4189786Z       "stages": {
2026-06-22T02:23:00.4189863Z         "doc": {
2026-06-22T02:23:00.4189958Z           "complete": false,
2026-06-22T02:23:00.4190039Z           "evidence": []
2026-06-22T02:23:00.4190115Z         },
2026-06-22T02:23:00.4190196Z         "impl": {
2026-06-22T02:23:00.4190287Z           "complete": true,
2026-06-22T02:23:00.4190368Z           "evidence": [
2026-06-22T02:23:00.4190455Z             {
2026-06-22T02:23:00.4190578Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4190663Z               "line": 514
2026-06-22T02:23:00.4190741Z             },
2026-06-22T02:23:00.4190822Z             {
2026-06-22T02:23:00.4190949Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.4191036Z               "line": 297
2026-06-22T02:23:00.4191113Z             },
2026-06-22T02:23:00.4191197Z             {
2026-06-22T02:23:00.4191298Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:23:00.4191385Z               "line": 59
2026-06-22T02:23:00.4191465Z             },
2026-06-22T02:23:00.4191545Z             {
2026-06-22T02:23:00.4191641Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4191738Z               "line": 5291
2026-06-22T02:23:00.4191817Z             },
2026-06-22T02:23:00.4192007Z             {
2026-06-22T02:23:00.4192116Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4192290Z               "line": 7137
2026-06-22T02:23:00.4192372Z             }
2026-06-22T02:23:00.4192454Z           ]
2026-06-22T02:23:00.4192543Z         },
2026-06-22T02:23:00.4192625Z         "int": {
2026-06-22T02:23:00.4192711Z           "complete": false,
2026-06-22T02:23:00.4192797Z           "evidence": []
2026-06-22T02:23:00.4192872Z         },
2026-06-22T02:23:00.4192959Z         "unit": {
2026-06-22T02:23:00.4193036Z           "complete": true,
2026-06-22T02:23:00.4193126Z           "evidence": [
2026-06-22T02:23:00.4193211Z             {
2026-06-22T02:23:00.4193327Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4193412Z               "line": 1479
2026-06-22T02:23:00.4193497Z             },
2026-06-22T02:23:00.4193578Z             {
2026-06-22T02:23:00.4193689Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4193793Z               "line": 1512
2026-06-22T02:23:00.4193879Z             },
2026-06-22T02:23:00.4196880Z             {
2026-06-22T02:23:00.4197047Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.4197133Z               "line": 527
2026-06-22T02:23:00.4197219Z             },
2026-06-22T02:23:00.4197299Z             {
2026-06-22T02:23:00.4197417Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:23:00.4197498Z               "line": 160
2026-06-22T02:23:00.4197578Z             },
2026-06-22T02:23:00.4197658Z             {
2026-06-22T02:23:00.4197773Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:23:00.4197855Z               "line": 190
2026-06-22T02:23:00.4197935Z             },
2026-06-22T02:23:00.4198015Z             {
2026-06-22T02:23:00.4198121Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:23:00.4198207Z               "line": 225
2026-06-22T02:23:00.4198287Z             },
2026-06-22T02:23:00.4198373Z             {
2026-06-22T02:23:00.4198483Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4198569Z               "line": 7994
2026-06-22T02:23:00.4198649Z             }
2026-06-22T02:23:00.4198727Z           ]
2026-06-22T02:23:00.4198808Z         }
2026-06-22T02:23:00.4198888Z       }
2026-06-22T02:23:00.4199056Z     },
2026-06-22T02:23:00.4199132Z     {
2026-06-22T02:23:00.4199208Z       "id": "REQ-INST-12",
2026-06-22T02:23:00.4199499Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-22T02:23:00.4199603Z       "requiredStages": [
2026-06-22T02:23:00.4199681Z         "impl",
2026-06-22T02:23:00.4199767Z         "unit"
2026-06-22T02:23:00.4199851Z       ],
2026-06-22T02:23:00.4199937Z       "stages": {
2026-06-22T02:23:00.4200015Z         "doc": {
2026-06-22T02:23:00.4200100Z           "complete": false,
2026-06-22T02:23:00.4200180Z           "evidence": []
2026-06-22T02:23:00.4200255Z         },
2026-06-22T02:23:00.4200342Z         "impl": {
2026-06-22T02:23:00.4200428Z           "complete": true,
2026-06-22T02:23:00.4200514Z           "evidence": [
2026-06-22T02:23:00.4200599Z             {
2026-06-22T02:23:00.4200724Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4200814Z               "line": 566
2026-06-22T02:23:00.4200894Z             },
2026-06-22T02:23:00.4200967Z             {
2026-06-22T02:23:00.4201076Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4201162Z               "line": 659
2026-06-22T02:23:00.4201243Z             },
2026-06-22T02:23:00.4201325Z             {
2026-06-22T02:23:00.4201428Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4201514Z               "line": 739
2026-06-22T02:23:00.4201581Z             },
2026-06-22T02:23:00.4201659Z             {
2026-06-22T02:23:00.4201767Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4201848Z               "line": 96
2026-06-22T02:23:00.4202058Z             },
2026-06-22T02:23:00.4202139Z             {
2026-06-22T02:23:00.4202250Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4202425Z               "line": 269
2026-06-22T02:23:00.4202496Z             },
2026-06-22T02:23:00.4202582Z             {
2026-06-22T02:23:00.4202700Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.4202780Z               "line": 148
2026-06-22T02:23:00.4202860Z             }
2026-06-22T02:23:00.4202942Z           ]
2026-06-22T02:23:00.4203015Z         },
2026-06-22T02:23:00.4203094Z         "int": {
2026-06-22T02:23:00.4203185Z           "complete": false,
2026-06-22T02:23:00.4203272Z           "evidence": []
2026-06-22T02:23:00.4203353Z         },
2026-06-22T02:23:00.4203432Z         "unit": {
2026-06-22T02:23:00.4203519Z           "complete": true,
2026-06-22T02:23:00.4203601Z           "evidence": [
2026-06-22T02:23:00.4203677Z             {
2026-06-22T02:23:00.4203790Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4203882Z               "line": 1554
2026-06-22T02:23:00.4203962Z             },
2026-06-22T02:23:00.4204052Z             {
2026-06-22T02:23:00.4204158Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4204249Z               "line": 1577
2026-06-22T02:23:00.4204330Z             },
2026-06-22T02:23:00.4204415Z             {
2026-06-22T02:23:00.4204526Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4204597Z               "line": 1614
2026-06-22T02:23:00.4204682Z             },
2026-06-22T02:23:00.4204759Z             {
2026-06-22T02:23:00.4204865Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4204939Z               "line": 457
2026-06-22T02:23:00.4205021Z             },
2026-06-22T02:23:00.4205098Z             {
2026-06-22T02:23:00.4205213Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.4205292Z               "line": 185
2026-06-22T02:23:00.4205382Z             },
2026-06-22T02:23:00.4205458Z             {
2026-06-22T02:23:00.4205562Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.4205656Z               "line": 206
2026-06-22T02:23:00.4205742Z             },
2026-06-22T02:23:00.4205819Z             {
2026-06-22T02:23:00.4205928Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.4206009Z               "line": 232
2026-06-22T02:23:00.4206095Z             }
2026-06-22T02:23:00.4206177Z           ]
2026-06-22T02:23:00.4206257Z         }
2026-06-22T02:23:00.4206338Z       }
2026-06-22T02:23:00.4206410Z     },
2026-06-22T02:23:00.4206496Z     {
2026-06-22T02:23:00.4206581Z       "id": "REQ-INST-13",
2026-06-22T02:23:00.4206764Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-22T02:23:00.4206858Z       "requiredStages": [
2026-06-22T02:23:00.4206939Z         "impl",
2026-06-22T02:23:00.4207025Z         "unit"
2026-06-22T02:23:00.4207107Z       ],
2026-06-22T02:23:00.4207187Z       "stages": {
2026-06-22T02:23:00.4207268Z         "doc": {
2026-06-22T02:23:00.4207359Z           "complete": false,
2026-06-22T02:23:00.4207440Z           "evidence": []
2026-06-22T02:23:00.4207511Z         },
2026-06-22T02:23:00.4207588Z         "impl": {
2026-06-22T02:23:00.4207674Z           "complete": true,
2026-06-22T02:23:00.4207760Z           "evidence": [
2026-06-22T02:23:00.4207840Z             {
2026-06-22T02:23:00.4207948Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4208035Z               "line": 100
2026-06-22T02:23:00.4208105Z             },
2026-06-22T02:23:00.4208185Z             {
2026-06-22T02:23:00.4208289Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.4208410Z               "line": 171
2026-06-22T02:23:00.4208486Z             }
2026-06-22T02:23:00.4208580Z           ]
2026-06-22T02:23:00.4208667Z         },
2026-06-22T02:23:00.4208748Z         "int": {
2026-06-22T02:23:00.4208829Z           "complete": false,
2026-06-22T02:23:00.4209096Z           "evidence": []
2026-06-22T02:23:00.4209186Z         },
2026-06-22T02:23:00.4209420Z         "unit": {
2026-06-22T02:23:00.4209525Z           "complete": true,
2026-06-22T02:23:00.4209616Z           "evidence": [
2026-06-22T02:23:00.4209692Z             {
2026-06-22T02:23:00.4209811Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.4209887Z               "line": 261
2026-06-22T02:23:00.4209969Z             },
2026-06-22T02:23:00.4210044Z             {
2026-06-22T02:23:00.4210159Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:23:00.4210241Z               "line": 279
2026-06-22T02:23:00.4210317Z             }
2026-06-22T02:23:00.4210397Z           ]
2026-06-22T02:23:00.4210474Z         }
2026-06-22T02:23:00.4210556Z       }
2026-06-22T02:23:00.4210637Z     },
2026-06-22T02:23:00.4210716Z     {
2026-06-22T02:23:00.4210801Z       "id": "REQ-INST-14",
2026-06-22T02:23:00.4211154Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-22T02:23:00.4211265Z       "requiredStages": [
2026-06-22T02:23:00.4211346Z         "doc",
2026-06-22T02:23:00.4211426Z         "impl",
2026-06-22T02:23:00.4211503Z         "unit"
2026-06-22T02:23:00.4211584Z       ],
2026-06-22T02:23:00.4211670Z       "stages": {
2026-06-22T02:23:00.4211755Z         "doc": {
2026-06-22T02:23:00.4211836Z           "complete": true,
2026-06-22T02:23:00.4211918Z           "evidence": [
2026-06-22T02:23:00.4211989Z             {
2026-06-22T02:23:00.4212075Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4212171Z               "line": 588
2026-06-22T02:23:00.4212252Z             },
2026-06-22T02:23:00.4212327Z             {
2026-06-22T02:23:00.4212427Z               "path": "docs/STORAGE.md",
2026-06-22T02:23:00.4212510Z               "line": 49
2026-06-22T02:23:00.4212586Z             }
2026-06-22T02:23:00.4212660Z           ]
2026-06-22T02:23:00.4212747Z         },
2026-06-22T02:23:00.4212830Z         "impl": {
2026-06-22T02:23:00.4212915Z           "complete": true,
2026-06-22T02:23:00.4212999Z           "evidence": [
2026-06-22T02:23:00.4213080Z             {
2026-06-22T02:23:00.4213213Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4213293Z               "line": 410
2026-06-22T02:23:00.4213378Z             },
2026-06-22T02:23:00.4213455Z             {
2026-06-22T02:23:00.4213570Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4213649Z               "line": 367
2026-06-22T02:23:00.4213730Z             },
2026-06-22T02:23:00.4213807Z             {
2026-06-22T02:23:00.4213903Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4213978Z               "line": 293
2026-06-22T02:23:00.4214050Z             },
2026-06-22T02:23:00.4214132Z             {
2026-06-22T02:23:00.4214227Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4214317Z               "line": 1577
2026-06-22T02:23:00.4214399Z             }
2026-06-22T02:23:00.4214471Z           ]
2026-06-22T02:23:00.4214556Z         },
2026-06-22T02:23:00.4214636Z         "int": {
2026-06-22T02:23:00.4214713Z           "complete": false,
2026-06-22T02:23:00.4214800Z           "evidence": []
2026-06-22T02:23:00.4214870Z         },
2026-06-22T02:23:00.4214951Z         "unit": {
2026-06-22T02:23:00.4215038Z           "complete": true,
2026-06-22T02:23:00.4215152Z           "evidence": [
2026-06-22T02:23:00.4215233Z             {
2026-06-22T02:23:00.4215353Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4215444Z               "line": 1163
2026-06-22T02:23:00.4215523Z             },
2026-06-22T02:23:00.4215600Z             {
2026-06-22T02:23:00.4215716Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4215805Z               "line": 944
2026-06-22T02:23:00.4215890Z             },
2026-06-22T02:23:00.4215970Z             {
2026-06-22T02:23:00.4216192Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4216278Z               "line": 1205
2026-06-22T02:23:00.4216427Z             },
2026-06-22T02:23:00.4216507Z             {
2026-06-22T02:23:00.4216621Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4216709Z               "line": 659
2026-06-22T02:23:00.4216790Z             },
2026-06-22T02:23:00.4216869Z             {
2026-06-22T02:23:00.4216966Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4217056Z               "line": 8070
2026-06-22T02:23:00.4217128Z             }
2026-06-22T02:23:00.4217213Z           ]
2026-06-22T02:23:00.4217299Z         }
2026-06-22T02:23:00.4217366Z       }
2026-06-22T02:23:00.4217442Z     },
2026-06-22T02:23:00.4217513Z     {
2026-06-22T02:23:00.4217605Z       "id": "REQ-INST-15",
2026-06-22T02:23:00.4218278Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-22T02:23:00.4218386Z       "requiredStages": [
2026-06-22T02:23:00.4218466Z         "doc",
2026-06-22T02:23:00.4218542Z         "impl",
2026-06-22T02:23:00.4218624Z         "unit"
2026-06-22T02:23:00.4218698Z       ],
2026-06-22T02:23:00.4218783Z       "stages": {
2026-06-22T02:23:00.4218869Z         "doc": {
2026-06-22T02:23:00.4219013Z           "complete": true,
2026-06-22T02:23:00.4219102Z           "evidence": [
2026-06-22T02:23:00.4219174Z             {
2026-06-22T02:23:00.4219351Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-22T02:23:00.4219431Z               "line": 3
2026-06-22T02:23:00.4219513Z             }
2026-06-22T02:23:00.4219594Z           ]
2026-06-22T02:23:00.4219671Z         },
2026-06-22T02:23:00.4219756Z         "impl": {
2026-06-22T02:23:00.4219833Z           "complete": true,
2026-06-22T02:23:00.4219928Z           "evidence": [
2026-06-22T02:23:00.4220009Z             {
2026-06-22T02:23:00.4220142Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4220224Z               "line": 353
2026-06-22T02:23:00.4220304Z             },
2026-06-22T02:23:00.4220385Z             {
2026-06-22T02:23:00.4220481Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4220562Z               "line": 60
2026-06-22T02:23:00.4220642Z             },
2026-06-22T02:23:00.4220724Z             {
2026-06-22T02:23:00.4220849Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.4220924Z               "line": 368
2026-06-22T02:23:00.4221000Z             },
2026-06-22T02:23:00.4221077Z             {
2026-06-22T02:23:00.4221202Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.4221281Z               "line": 417
2026-06-22T02:23:00.4221361Z             },
2026-06-22T02:23:00.4221442Z             {
2026-06-22T02:23:00.4221553Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4221634Z               "line": 19
2026-06-22T02:23:00.4221719Z             },
2026-06-22T02:23:00.4221801Z             {
2026-06-22T02:23:00.4221911Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4221986Z               "line": 70
2026-06-22T02:23:00.4222072Z             },
2026-06-22T02:23:00.4222149Z             {
2026-06-22T02:23:00.4222254Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4222339Z               "line": 96
2026-06-22T02:23:00.4222411Z             },
2026-06-22T02:23:00.4222492Z             {
2026-06-22T02:23:00.4222602Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4222687Z               "line": 121
2026-06-22T02:23:00.4222765Z             },
2026-06-22T02:23:00.4222845Z             {
2026-06-22T02:23:00.4222950Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4223031Z               "line": 172
2026-06-22T02:23:00.4223221Z             },
2026-06-22T02:23:00.4223288Z             {
2026-06-22T02:23:00.4223408Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4223573Z               "line": 178
2026-06-22T02:23:00.4223649Z             },
2026-06-22T02:23:00.4223730Z             {
2026-06-22T02:23:00.4223829Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4223909Z               "line": 1469
2026-06-22T02:23:00.4223985Z             }
2026-06-22T02:23:00.4224062Z           ]
2026-06-22T02:23:00.4224144Z         },
2026-06-22T02:23:00.4224228Z         "int": {
2026-06-22T02:23:00.4224305Z           "complete": false,
2026-06-22T02:23:00.4224397Z           "evidence": []
2026-06-22T02:23:00.4224477Z         },
2026-06-22T02:23:00.4224557Z         "unit": {
2026-06-22T02:23:00.4224649Z           "complete": true,
2026-06-22T02:23:00.4224731Z           "evidence": [
2026-06-22T02:23:00.4224816Z             {
2026-06-22T02:23:00.4224935Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.4225031Z               "line": 577
2026-06-22T02:23:00.4225106Z             },
2026-06-22T02:23:00.4225178Z             {
2026-06-22T02:23:00.4225303Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.4225388Z               "line": 638
2026-06-22T02:23:00.4225464Z             },
2026-06-22T02:23:00.4225535Z             {
2026-06-22T02:23:00.4225646Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4225736Z               "line": 213
2026-06-22T02:23:00.4225817Z             },
2026-06-22T02:23:00.4225898Z             {
2026-06-22T02:23:00.4226004Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4226093Z               "line": 249
2026-06-22T02:23:00.4226174Z             },
2026-06-22T02:23:00.4226257Z             {
2026-06-22T02:23:00.4226366Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4226450Z               "line": 262
2026-06-22T02:23:00.4226535Z             },
2026-06-22T02:23:00.4226617Z             {
2026-06-22T02:23:00.4226725Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:23:00.4226810Z               "line": 338
2026-06-22T02:23:00.4226887Z             },
2026-06-22T02:23:00.4226973Z             {
2026-06-22T02:23:00.4227077Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4227163Z               "line": 690
2026-06-22T02:23:00.4227240Z             },
2026-06-22T02:23:00.4227325Z             {
2026-06-22T02:23:00.4227424Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4227511Z               "line": 8007
2026-06-22T02:23:00.4227593Z             },
2026-06-22T02:23:00.4227664Z             {
2026-06-22T02:23:00.4227768Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4227850Z               "line": 9837
2026-06-22T02:23:00.4227927Z             }
2026-06-22T02:23:00.4227997Z           ]
2026-06-22T02:23:00.4228083Z         }
2026-06-22T02:23:00.4228165Z       }
2026-06-22T02:23:00.4228241Z     },
2026-06-22T02:23:00.4228312Z     {
2026-06-22T02:23:00.4228393Z       "id": "REQ-INST-2",
2026-06-22T02:23:00.4228523Z       "title": "Per-node files, synced Psyche mind",
2026-06-22T02:23:00.4228608Z       "requiredStages": [
2026-06-22T02:23:00.4228684Z         "impl",
2026-06-22T02:23:00.4228770Z         "unit"
2026-06-22T02:23:00.4228843Z       ],
2026-06-22T02:23:00.4228923Z       "stages": {
2026-06-22T02:23:00.4229078Z         "doc": {
2026-06-22T02:23:00.4229169Z           "complete": false,
2026-06-22T02:23:00.4229254Z           "evidence": []
2026-06-22T02:23:00.4229334Z         },
2026-06-22T02:23:00.4229424Z         "impl": {
2026-06-22T02:23:00.4229515Z           "complete": true,
2026-06-22T02:23:00.4229606Z           "evidence": [
2026-06-22T02:23:00.4229686Z             {
2026-06-22T02:23:00.4229807Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4229882Z               "line": 108
2026-06-22T02:23:00.4229963Z             },
2026-06-22T02:23:00.4230150Z             {
2026-06-22T02:23:00.4230250Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.4230441Z               "line": 28
2026-06-22T02:23:00.4230521Z             },
2026-06-22T02:23:00.4230597Z             {
2026-06-22T02:23:00.4230707Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.4230785Z               "line": 74
2026-06-22T02:23:00.4230859Z             },
2026-06-22T02:23:00.4230940Z             {
2026-06-22T02:23:00.4231042Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.4231123Z               "line": 96
2026-06-22T02:23:00.4231207Z             },
2026-06-22T02:23:00.4231284Z             {
2026-06-22T02:23:00.4231400Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.4231484Z               "line": 86
2026-06-22T02:23:00.4231556Z             },
2026-06-22T02:23:00.4231632Z             {
2026-06-22T02:23:00.4231743Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:23:00.4231836Z               "line": 118
2026-06-22T02:23:00.4231922Z             }
2026-06-22T02:23:00.4232003Z           ]
2026-06-22T02:23:00.4232085Z         },
2026-06-22T02:23:00.4232165Z         "int": {
2026-06-22T02:23:00.4232260Z           "complete": false,
2026-06-22T02:23:00.4232347Z           "evidence": []
2026-06-22T02:23:00.4232433Z         },
2026-06-22T02:23:00.4232508Z         "unit": {
2026-06-22T02:23:00.4232603Z           "complete": true,
2026-06-22T02:23:00.4232691Z           "evidence": [
2026-06-22T02:23:00.4232771Z             {
2026-06-22T02:23:00.4232885Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:23:00.4232966Z               "line": 250
2026-06-22T02:23:00.4233047Z             },
2026-06-22T02:23:00.4233128Z             {
2026-06-22T02:23:00.4233242Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.4233330Z               "line": 280
2026-06-22T02:23:00.4233410Z             }
2026-06-22T02:23:00.4233491Z           ]
2026-06-22T02:23:00.4233567Z         }
2026-06-22T02:23:00.4233654Z       }
2026-06-22T02:23:00.4233729Z     },
2026-06-22T02:23:00.4233820Z     {
2026-06-22T02:23:00.4233906Z       "id": "REQ-INST-3",
2026-06-22T02:23:00.4234048Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-22T02:23:00.4234133Z       "requiredStages": [
2026-06-22T02:23:00.4234214Z         "doc",
2026-06-22T02:23:00.4234295Z         "impl",
2026-06-22T02:23:00.4234380Z         "unit"
2026-06-22T02:23:00.4234465Z       ],
2026-06-22T02:23:00.4234546Z       "stages": {
2026-06-22T02:23:00.4234627Z         "doc": {
2026-06-22T02:23:00.4234722Z           "complete": true,
2026-06-22T02:23:00.4234793Z           "evidence": [
2026-06-22T02:23:00.4234879Z             {
2026-06-22T02:23:00.4234990Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-22T02:23:00.4235066Z               "line": 3
2026-06-22T02:23:00.4235146Z             }
2026-06-22T02:23:00.4235229Z           ]
2026-06-22T02:23:00.4235319Z         },
2026-06-22T02:23:00.4235399Z         "impl": {
2026-06-22T02:23:00.4235490Z           "complete": true,
2026-06-22T02:23:00.4235586Z           "evidence": [
2026-06-22T02:23:00.4235671Z             {
2026-06-22T02:23:00.4235790Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.4235873Z               "line": 60
2026-06-22T02:23:00.4235957Z             },
2026-06-22T02:23:00.4236038Z             {
2026-06-22T02:23:00.4236158Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4236249Z               "line": 480
2026-06-22T02:23:00.4236333Z             },
2026-06-22T02:23:00.4236415Z             {
2026-06-22T02:23:00.4236521Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4236606Z               "line": 254
2026-06-22T02:23:00.4236687Z             },
2026-06-22T02:23:00.4236773Z             {
2026-06-22T02:23:00.4236879Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4236968Z               "line": 384
2026-06-22T02:23:00.4237129Z             },
2026-06-22T02:23:00.4237201Z             {
2026-06-22T02:23:00.4237389Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4237475Z               "line": 418
2026-06-22T02:23:00.4237556Z             },
2026-06-22T02:23:00.4237642Z             {
2026-06-22T02:23:00.4237756Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T02:23:00.4237843Z               "line": 74
2026-06-22T02:23:00.4237915Z             },
2026-06-22T02:23:00.4237999Z             {
2026-06-22T02:23:00.4238124Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4238205Z               "line": 234
2026-06-22T02:23:00.4238286Z             },
2026-06-22T02:23:00.4238367Z             {
2026-06-22T02:23:00.4238487Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4238567Z               "line": 396
2026-06-22T02:23:00.4238643Z             },
2026-06-22T02:23:00.4238725Z             {
2026-06-22T02:23:00.4238844Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4238930Z               "line": 45
2026-06-22T02:23:00.4239083Z             },
2026-06-22T02:23:00.4239159Z             {
2026-06-22T02:23:00.4239263Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4239355Z               "line": 114
2026-06-22T02:23:00.4239441Z             },
2026-06-22T02:23:00.4239525Z             {
2026-06-22T02:23:00.4239634Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4239720Z               "line": 152
2026-06-22T02:23:00.4239800Z             },
2026-06-22T02:23:00.4239870Z             {
2026-06-22T02:23:00.4239989Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4240071Z               "line": 168
2026-06-22T02:23:00.4240162Z             },
2026-06-22T02:23:00.4240246Z             {
2026-06-22T02:23:00.4240352Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4240442Z               "line": 178
2026-06-22T02:23:00.4240523Z             },
2026-06-22T02:23:00.4240609Z             {
2026-06-22T02:23:00.4240724Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4240815Z               "line": 210
2026-06-22T02:23:00.4240895Z             },
2026-06-22T02:23:00.4240977Z             {
2026-06-22T02:23:00.4241086Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4241171Z               "line": 287
2026-06-22T02:23:00.4241257Z             },
2026-06-22T02:23:00.4241335Z             {
2026-06-22T02:23:00.4241439Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4241520Z               "line": 311
2026-06-22T02:23:00.4241592Z             },
2026-06-22T02:23:00.4241674Z             {
2026-06-22T02:23:00.4241777Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4241863Z               "line": 389
2026-06-22T02:23:00.4241945Z             },
2026-06-22T02:23:00.4242026Z             {
2026-06-22T02:23:00.4242135Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4242222Z               "line": 438
2026-06-22T02:23:00.4242308Z             },
2026-06-22T02:23:00.4242387Z             {
2026-06-22T02:23:00.4242496Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-22T02:23:00.4242577Z               "line": 37
2026-06-22T02:23:00.4242659Z             },
2026-06-22T02:23:00.4242739Z             {
2026-06-22T02:23:00.4242854Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4242941Z               "line": 62
2026-06-22T02:23:00.4243012Z             },
2026-06-22T02:23:00.4243097Z             {
2026-06-22T02:23:00.4243202Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4243284Z               "line": 279
2026-06-22T02:23:00.4243365Z             },
2026-06-22T02:23:00.4243445Z             {
2026-06-22T02:23:00.4243551Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4243740Z               "line": 1848
2026-06-22T02:23:00.4243827Z             }
2026-06-22T02:23:00.4243909Z           ]
2026-06-22T02:23:00.4244084Z         },
2026-06-22T02:23:00.4244166Z         "int": {
2026-06-22T02:23:00.4244251Z           "complete": false,
2026-06-22T02:23:00.4244341Z           "evidence": []
2026-06-22T02:23:00.4244418Z         },
2026-06-22T02:23:00.4244500Z         "unit": {
2026-06-22T02:23:00.4244585Z           "complete": true,
2026-06-22T02:23:00.4244666Z           "evidence": [
2026-06-22T02:23:00.4244746Z             {
2026-06-22T02:23:00.4244851Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.4244940Z               "line": 360
2026-06-22T02:23:00.4245020Z             },
2026-06-22T02:23:00.4245101Z             {
2026-06-22T02:23:00.4245221Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4245306Z               "line": 837
2026-06-22T02:23:00.4245391Z             },
2026-06-22T02:23:00.4245464Z             {
2026-06-22T02:23:00.4245583Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4245664Z               "line": 894
2026-06-22T02:23:00.4245759Z             },
2026-06-22T02:23:00.4245836Z             {
2026-06-22T02:23:00.4245950Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.4246035Z               "line": 889
2026-06-22T02:23:00.4246118Z             },
2026-06-22T02:23:00.4246198Z             {
2026-06-22T02:23:00.4246312Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.4246403Z               "line": 1014
2026-06-22T02:23:00.4246489Z             },
2026-06-22T02:23:00.4246565Z             {
2026-06-22T02:23:00.4246689Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4246780Z               "line": 1264
2026-06-22T02:23:00.4246861Z             },
2026-06-22T02:23:00.4246942Z             {
2026-06-22T02:23:00.4247058Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4247147Z               "line": 1405
2026-06-22T02:23:00.4247218Z             },
2026-06-22T02:23:00.4247319Z             {
2026-06-22T02:23:00.4247424Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4247504Z               "line": 449
2026-06-22T02:23:00.4247589Z             },
2026-06-22T02:23:00.4247665Z             {
2026-06-22T02:23:00.4247770Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4247854Z               "line": 485
2026-06-22T02:23:00.4247934Z             },
2026-06-22T02:23:00.4248016Z             {
2026-06-22T02:23:00.4248126Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4248207Z               "line": 540
2026-06-22T02:23:00.4248288Z             },
2026-06-22T02:23:00.4248370Z             {
2026-06-22T02:23:00.4248479Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4248568Z               "line": 697
2026-06-22T02:23:00.4248651Z             },
2026-06-22T02:23:00.4248737Z             {
2026-06-22T02:23:00.4248841Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4248932Z               "line": 931
2026-06-22T02:23:00.4249099Z             },
2026-06-22T02:23:00.4249170Z             {
2026-06-22T02:23:00.4249285Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4249371Z               "line": 945
2026-06-22T02:23:00.4249470Z             },
2026-06-22T02:23:00.4249551Z             {
2026-06-22T02:23:00.4249662Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4249742Z               "line": 1290
2026-06-22T02:23:00.4249819Z             },
2026-06-22T02:23:00.4249900Z             {
2026-06-22T02:23:00.4249996Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4250090Z               "line": 609
2026-06-22T02:23:00.4250170Z             },
2026-06-22T02:23:00.4250247Z             {
2026-06-22T02:23:00.4250346Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4250534Z               "line": 8031
2026-06-22T02:23:00.4250616Z             }
2026-06-22T02:23:00.4250782Z           ]
2026-06-22T02:23:00.4250864Z         }
2026-06-22T02:23:00.4250946Z       }
2026-06-22T02:23:00.4251017Z     },
2026-06-22T02:23:00.4251107Z     {
2026-06-22T02:23:00.4251188Z       "id": "REQ-INST-4",
2026-06-22T02:23:00.4251361Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-22T02:23:00.4251450Z       "requiredStages": [
2026-06-22T02:23:00.4251533Z         "impl",
2026-06-22T02:23:00.4251609Z         "unit"
2026-06-22T02:23:00.4251684Z       ],
2026-06-22T02:23:00.4251770Z       "stages": {
2026-06-22T02:23:00.4251847Z         "doc": {
2026-06-22T02:23:00.4251942Z           "complete": false,
2026-06-22T02:23:00.4252023Z           "evidence": []
2026-06-22T02:23:00.4252109Z         },
2026-06-22T02:23:00.4252191Z         "impl": {
2026-06-22T02:23:00.4252276Z           "complete": true,
2026-06-22T02:23:00.4252357Z           "evidence": [
2026-06-22T02:23:00.4252443Z             {
2026-06-22T02:23:00.4252563Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4252647Z               "line": 385
2026-06-22T02:23:00.4252733Z             },
2026-06-22T02:23:00.4252816Z             {
2026-06-22T02:23:00.4252924Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4253014Z               "line": 202
2026-06-22T02:23:00.4253094Z             },
2026-06-22T02:23:00.4253176Z             {
2026-06-22T02:23:00.4253281Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4253371Z               "line": 234
2026-06-22T02:23:00.4253448Z             },
2026-06-22T02:23:00.4253529Z             {
2026-06-22T02:23:00.4253638Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4253719Z               "line": 274
2026-06-22T02:23:00.4253806Z             }
2026-06-22T02:23:00.4253891Z           ]
2026-06-22T02:23:00.4253967Z         },
2026-06-22T02:23:00.4254058Z         "int": {
2026-06-22T02:23:00.4254145Z           "complete": false,
2026-06-22T02:23:00.4254239Z           "evidence": []
2026-06-22T02:23:00.4254324Z         },
2026-06-22T02:23:00.4254411Z         "unit": {
2026-06-22T02:23:00.4254497Z           "complete": true,
2026-06-22T02:23:00.4254578Z           "evidence": [
2026-06-22T02:23:00.4254663Z             {
2026-06-22T02:23:00.4254779Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4254863Z               "line": 889
2026-06-22T02:23:00.4254944Z             },
2026-06-22T02:23:00.4255026Z             {
2026-06-22T02:23:00.4255145Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4255230Z               "line": 561
2026-06-22T02:23:00.4255315Z             },
2026-06-22T02:23:00.4255397Z             {
2026-06-22T02:23:00.4255509Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4255595Z               "line": 668
2026-06-22T02:23:00.4255671Z             },
2026-06-22T02:23:00.4255752Z             {
2026-06-22T02:23:00.4255857Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4255951Z               "line": 750
2026-06-22T02:23:00.4256029Z             }
2026-06-22T02:23:00.4256115Z           ]
2026-06-22T02:23:00.4256195Z         }
2026-06-22T02:23:00.4256280Z       }
2026-06-22T02:23:00.4256364Z     },
2026-06-22T02:23:00.4256449Z     {
2026-06-22T02:23:00.4256543Z       "id": "REQ-INST-5",
2026-06-22T02:23:00.4256711Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-22T02:23:00.4256806Z       "requiredStages": [
2026-06-22T02:23:00.4256887Z         "impl",
2026-06-22T02:23:00.4256973Z         "unit",
2026-06-22T02:23:00.4259602Z         "int"
2026-06-22T02:23:00.4259702Z       ],
2026-06-22T02:23:00.4259792Z       "stages": {
2026-06-22T02:23:00.4259874Z         "doc": {
2026-06-22T02:23:00.4259959Z           "complete": false,
2026-06-22T02:23:00.4260045Z           "evidence": []
2026-06-22T02:23:00.4260256Z         },
2026-06-22T02:23:00.4260340Z         "impl": {
2026-06-22T02:23:00.4260431Z           "complete": true,
2026-06-22T02:23:00.4260627Z           "evidence": [
2026-06-22T02:23:00.4260697Z             {
2026-06-22T02:23:00.4260826Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T02:23:00.4260911Z               "line": 85
2026-06-22T02:23:00.4260986Z             },
2026-06-22T02:23:00.4261061Z             {
2026-06-22T02:23:00.4261176Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4261259Z               "line": 68
2026-06-22T02:23:00.4261338Z             },
2026-06-22T02:23:00.4261419Z             {
2026-06-22T02:23:00.4261530Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4261611Z               "line": 99
2026-06-22T02:23:00.4261691Z             },
2026-06-22T02:23:00.4261768Z             {
2026-06-22T02:23:00.4261873Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4261954Z               "line": 183
2026-06-22T02:23:00.4262049Z             },
2026-06-22T02:23:00.4262121Z             {
2026-06-22T02:23:00.4262234Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4262325Z               "line": 314
2026-06-22T02:23:00.4262402Z             }
2026-06-22T02:23:00.4262484Z           ]
2026-06-22T02:23:00.4262564Z         },
2026-06-22T02:23:00.4262644Z         "int": {
2026-06-22T02:23:00.4262737Z           "complete": true,
2026-06-22T02:23:00.4262827Z           "evidence": [
2026-06-22T02:23:00.4262907Z             {
2026-06-22T02:23:00.4263032Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4263118Z               "line": 156
2026-06-22T02:23:00.4263198Z             },
2026-06-22T02:23:00.4263279Z             {
2026-06-22T02:23:00.4263385Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:23:00.4263471Z               "line": 145
2026-06-22T02:23:00.4263550Z             },
2026-06-22T02:23:00.4263621Z             {
2026-06-22T02:23:00.4263746Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4263837Z               "line": 707
2026-06-22T02:23:00.4263917Z             },
2026-06-22T02:23:00.4263993Z             {
2026-06-22T02:23:00.4264103Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4264189Z               "line": 1069
2026-06-22T02:23:00.4264270Z             }
2026-06-22T02:23:00.4264347Z           ]
2026-06-22T02:23:00.4264427Z         },
2026-06-22T02:23:00.4264509Z         "unit": {
2026-06-22T02:23:00.4264599Z           "complete": true,
2026-06-22T02:23:00.4264686Z           "evidence": [
2026-06-22T02:23:00.4264771Z             {
2026-06-22T02:23:00.4264870Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4264952Z               "line": 552
2026-06-22T02:23:00.4265034Z             },
2026-06-22T02:23:00.4265114Z             {
2026-06-22T02:23:00.4265219Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4265315Z               "line": 595
2026-06-22T02:23:00.4265396Z             },
2026-06-22T02:23:00.4265471Z             {
2026-06-22T02:23:00.4265586Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:23:00.4265669Z               "line": 219
2026-06-22T02:23:00.4265738Z             }
2026-06-22T02:23:00.4265814Z           ]
2026-06-22T02:23:00.4265899Z         }
2026-06-22T02:23:00.4265981Z       }
2026-06-22T02:23:00.4266056Z     },
2026-06-22T02:23:00.4266136Z     {
2026-06-22T02:23:00.4266216Z       "id": "REQ-INST-6",
2026-06-22T02:23:00.4266398Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-22T02:23:00.4266493Z       "requiredStages": [
2026-06-22T02:23:00.4266579Z         "impl",
2026-06-22T02:23:00.4266666Z         "unit",
2026-06-22T02:23:00.4266746Z         "int"
2026-06-22T02:23:00.4266831Z       ],
2026-06-22T02:23:00.4266914Z       "stages": {
2026-06-22T02:23:00.4266994Z         "doc": {
2026-06-22T02:23:00.4267075Z           "complete": true,
2026-06-22T02:23:00.4267243Z           "evidence": [
2026-06-22T02:23:00.4267323Z             {
2026-06-22T02:23:00.4267499Z               "path": "docs/DEFERRED.md",
2026-06-22T02:23:00.4267586Z               "line": 13
2026-06-22T02:23:00.4267666Z             }
2026-06-22T02:23:00.4267747Z           ]
2026-06-22T02:23:00.4267829Z         },
2026-06-22T02:23:00.4267911Z         "impl": {
2026-06-22T02:23:00.4267995Z           "complete": true,
2026-06-22T02:23:00.4268081Z           "evidence": [
2026-06-22T02:23:00.4268154Z             {
2026-06-22T02:23:00.4268258Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4268343Z               "line": 391
2026-06-22T02:23:00.4268425Z             },
2026-06-22T02:23:00.4268507Z             {
2026-06-22T02:23:00.4268620Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:23:00.4268705Z               "line": 27
2026-06-22T02:23:00.4268781Z             },
2026-06-22T02:23:00.4268858Z             {
2026-06-22T02:23:00.4269064Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:23:00.4269151Z               "line": 73
2026-06-22T02:23:00.4269233Z             },
2026-06-22T02:23:00.4269313Z             {
2026-06-22T02:23:00.4269437Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:23:00.4269514Z               "line": 182
2026-06-22T02:23:00.4269590Z             },
2026-06-22T02:23:00.4269675Z             {
2026-06-22T02:23:00.4269781Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4269861Z               "line": 426
2026-06-22T02:23:00.4269942Z             },
2026-06-22T02:23:00.4270018Z             {
2026-06-22T02:23:00.4270138Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T02:23:00.4270219Z               "line": 31
2026-06-22T02:23:00.4270309Z             },
2026-06-22T02:23:00.4270386Z             {
2026-06-22T02:23:00.4270496Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4270590Z               "line": 202
2026-06-22T02:23:00.4270662Z             },
2026-06-22T02:23:00.4270735Z             {
2026-06-22T02:23:00.4270848Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.4270934Z               "line": 83
2026-06-22T02:23:00.4271016Z             },
2026-06-22T02:23:00.4271088Z             {
2026-06-22T02:23:00.4271191Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4271276Z               "line": 1849
2026-06-22T02:23:00.4271357Z             },
2026-06-22T02:23:00.4271428Z             {
2026-06-22T02:23:00.4271536Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4271621Z               "line": 179
2026-06-22T02:23:00.4271703Z             },
2026-06-22T02:23:00.4271785Z             {
2026-06-22T02:23:00.4271885Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4271970Z               "line": 215
2026-06-22T02:23:00.4272042Z             }
2026-06-22T02:23:00.4272128Z           ]
2026-06-22T02:23:00.4272213Z         },
2026-06-22T02:23:00.4272299Z         "int": {
2026-06-22T02:23:00.4272376Z           "complete": true,
2026-06-22T02:23:00.4272466Z           "evidence": [
2026-06-22T02:23:00.4272547Z             {
2026-06-22T02:23:00.4272663Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4272748Z               "line": 721
2026-06-22T02:23:00.4272834Z             },
2026-06-22T02:23:00.4272914Z             {
2026-06-22T02:23:00.4273020Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4273105Z               "line": 1114
2026-06-22T02:23:00.4273186Z             },
2026-06-22T02:23:00.4273267Z             {
2026-06-22T02:23:00.4273373Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4273452Z               "line": 726
2026-06-22T02:23:00.4273534Z             }
2026-06-22T02:23:00.4273617Z           ]
2026-06-22T02:23:00.4273697Z         },
2026-06-22T02:23:00.4273777Z         "unit": {
2026-06-22T02:23:00.4273863Z           "complete": true,
2026-06-22T02:23:00.4274049Z           "evidence": [
2026-06-22T02:23:00.4274129Z             {
2026-06-22T02:23:00.4274321Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4274406Z               "line": 661
2026-06-22T02:23:00.4274486Z             },
2026-06-22T02:23:00.4274563Z             {
2026-06-22T02:23:00.4274673Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.4274759Z               "line": 899
2026-06-22T02:23:00.4274839Z             },
2026-06-22T02:23:00.4274917Z             {
2026-06-22T02:23:00.4275031Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T02:23:00.4275111Z               "line": 66
2026-06-22T02:23:00.4275192Z             },
2026-06-22T02:23:00.4275260Z             {
2026-06-22T02:23:00.4275364Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4275449Z               "line": 297
2026-06-22T02:23:00.4275532Z             },
2026-06-22T02:23:00.4275618Z             {
2026-06-22T02:23:00.4275722Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.4275803Z               "line": 203
2026-06-22T02:23:00.4275885Z             }
2026-06-22T02:23:00.4275970Z           ]
2026-06-22T02:23:00.4276051Z         }
2026-06-22T02:23:00.4276132Z       }
2026-06-22T02:23:00.4276209Z     },
2026-06-22T02:23:00.4276289Z     {
2026-06-22T02:23:00.4276379Z       "id": "REQ-INST-7",
2026-06-22T02:23:00.4276507Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-22T02:23:00.4276602Z       "requiredStages": [
2026-06-22T02:23:00.4276677Z         "impl",
2026-06-22T02:23:00.4276762Z         "unit",
2026-06-22T02:23:00.4276849Z         "int"
2026-06-22T02:23:00.4276926Z       ],
2026-06-22T02:23:00.4277010Z       "stages": {
2026-06-22T02:23:00.4277086Z         "doc": {
2026-06-22T02:23:00.4277173Z           "complete": false,
2026-06-22T02:23:00.4277254Z           "evidence": []
2026-06-22T02:23:00.4277334Z         },
2026-06-22T02:23:00.4277415Z         "impl": {
2026-06-22T02:23:00.4277498Z           "complete": true,
2026-06-22T02:23:00.4277578Z           "evidence": [
2026-06-22T02:23:00.4277668Z             {
2026-06-22T02:23:00.4277789Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4277878Z               "line": 436
2026-06-22T02:23:00.4277955Z             },
2026-06-22T02:23:00.4278040Z             {
2026-06-22T02:23:00.4278156Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4278241Z               "line": 27
2026-06-22T02:23:00.4278322Z             },
2026-06-22T02:23:00.4278408Z             {
2026-06-22T02:23:00.4278527Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4278603Z               "line": 207
2026-06-22T02:23:00.4278675Z             },
2026-06-22T02:23:00.4278757Z             {
2026-06-22T02:23:00.4278879Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4279034Z               "line": 344
2026-06-22T02:23:00.4279115Z             },
2026-06-22T02:23:00.4279194Z             {
2026-06-22T02:23:00.4279293Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-22T02:23:00.4279398Z               "line": 59
2026-06-22T02:23:00.4279478Z             },
2026-06-22T02:23:00.4279558Z             {
2026-06-22T02:23:00.4279678Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4279754Z               "line": 41
2026-06-22T02:23:00.4279840Z             },
2026-06-22T02:23:00.4279916Z             {
2026-06-22T02:23:00.4280036Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.4280121Z               "line": 27
2026-06-22T02:23:00.4280201Z             },
2026-06-22T02:23:00.4280277Z             {
2026-06-22T02:23:00.4280393Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.4280474Z               "line": 119
2026-06-22T02:23:00.4280559Z             },
2026-06-22T02:23:00.4280636Z             {
2026-06-22T02:23:00.4280841Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.4280931Z               "line": 134
2026-06-22T02:23:00.4281098Z             },
2026-06-22T02:23:00.4281179Z             {
2026-06-22T02:23:00.4281290Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:23:00.4281371Z               "line": 139
2026-06-22T02:23:00.4281456Z             }
2026-06-22T02:23:00.4281533Z           ]
2026-06-22T02:23:00.4281614Z         },
2026-06-22T02:23:00.4281690Z         "int": {
2026-06-22T02:23:00.4281780Z           "complete": true,
2026-06-22T02:23:00.4281864Z           "evidence": [
2026-06-22T02:23:00.4281946Z             {
2026-06-22T02:23:00.4282068Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:23:00.4282149Z               "line": 145
2026-06-22T02:23:00.4282230Z             },
2026-06-22T02:23:00.4282311Z             {
2026-06-22T02:23:00.4282421Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4282501Z               "line": 665
2026-06-22T02:23:00.4282593Z             },
2026-06-22T02:23:00.4282674Z             {
2026-06-22T02:23:00.4282788Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4282869Z               "line": 964
2026-06-22T02:23:00.4282950Z             }
2026-06-22T02:23:00.4283031Z           ]
2026-06-22T02:23:00.4283112Z         },
2026-06-22T02:23:00.4283193Z         "unit": {
2026-06-22T02:23:00.4283284Z           "complete": true,
2026-06-22T02:23:00.4283360Z           "evidence": [
2026-06-22T02:23:00.4283441Z             {
2026-06-22T02:23:00.4283557Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4283637Z               "line": 1134
2026-06-22T02:23:00.4283718Z             },
2026-06-22T02:23:00.4283784Z             {
2026-06-22T02:23:00.4283904Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4283989Z               "line": 1521
2026-06-22T02:23:00.4284075Z             },
2026-06-22T02:23:00.4284157Z             {
2026-06-22T02:23:00.4284271Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T02:23:00.4284351Z               "line": 84
2026-06-22T02:23:00.4284433Z             },
2026-06-22T02:23:00.4284511Z             {
2026-06-22T02:23:00.4284628Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4284713Z               "line": 812
2026-06-22T02:23:00.4284789Z             },
2026-06-22T02:23:00.4284861Z             {
2026-06-22T02:23:00.4284966Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4285051Z               "line": 823
2026-06-22T02:23:00.4285133Z             },
2026-06-22T02:23:00.4285215Z             {
2026-06-22T02:23:00.4285333Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4285419Z               "line": 838
2026-06-22T02:23:00.4285496Z             },
2026-06-22T02:23:00.4285581Z             {
2026-06-22T02:23:00.4285690Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.4285777Z               "line": 166
2026-06-22T02:23:00.4285863Z             },
2026-06-22T02:23:00.4285949Z             {
2026-06-22T02:23:00.4286067Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.4286145Z               "line": 181
2026-06-22T02:23:00.4286225Z             },
2026-06-22T02:23:00.4286306Z             {
2026-06-22T02:23:00.4286421Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.4286507Z               "line": 214
2026-06-22T02:23:00.4286586Z             }
2026-06-22T02:23:00.4286673Z           ]
2026-06-22T02:23:00.4286750Z         }
2026-06-22T02:23:00.4286836Z       }
2026-06-22T02:23:00.4286915Z     },
2026-06-22T02:23:00.4286996Z     {
2026-06-22T02:23:00.4287086Z       "id": "REQ-INST-8",
2026-06-22T02:23:00.4287232Z       "title": "Remote-control mode distinct from local operation",
2026-06-22T02:23:00.4287322Z       "requiredStages": [
2026-06-22T02:23:00.4287404Z         "impl",
2026-06-22T02:23:00.4287580Z         "unit",
2026-06-22T02:23:00.4287656Z         "int"
2026-06-22T02:23:00.4287743Z       ],
2026-06-22T02:23:00.4287890Z       "stages": {
2026-06-22T02:23:00.4287971Z         "doc": {
2026-06-22T02:23:00.4288053Z           "complete": false,
2026-06-22T02:23:00.4288133Z           "evidence": []
2026-06-22T02:23:00.4288209Z         },
2026-06-22T02:23:00.4288290Z         "impl": {
2026-06-22T02:23:00.4288373Z           "complete": true,
2026-06-22T02:23:00.4288458Z           "evidence": [
2026-06-22T02:23:00.4288538Z             {
2026-06-22T02:23:00.4288654Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.4288735Z               "line": 202
2026-06-22T02:23:00.4288816Z             },
2026-06-22T02:23:00.4288896Z             {
2026-06-22T02:23:00.4289082Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.4289163Z               "line": 504
2026-06-22T02:23:00.4289240Z             },
2026-06-22T02:23:00.4289322Z             {
2026-06-22T02:23:00.4289453Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.4289540Z               "line": 544
2026-06-22T02:23:00.4289627Z             },
2026-06-22T02:23:00.4289708Z             {
2026-06-22T02:23:00.4289816Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4289901Z               "line": 62
2026-06-22T02:23:00.4289978Z             }
2026-06-22T02:23:00.4290053Z           ]
2026-06-22T02:23:00.4290133Z         },
2026-06-22T02:23:00.4290203Z         "int": {
2026-06-22T02:23:00.4290295Z           "complete": true,
2026-06-22T02:23:00.4290386Z           "evidence": [
2026-06-22T02:23:00.4290466Z             {
2026-06-22T02:23:00.4290586Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4290667Z               "line": 415
2026-06-22T02:23:00.4290752Z             },
2026-06-22T02:23:00.4290833Z             {
2026-06-22T02:23:00.4290949Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4291044Z               "line": 1028
2026-06-22T02:23:00.4291119Z             }
2026-06-22T02:23:00.4291201Z           ]
2026-06-22T02:23:00.4291283Z         },
2026-06-22T02:23:00.4291368Z         "unit": {
2026-06-22T02:23:00.4291444Z           "complete": true,
2026-06-22T02:23:00.4291530Z           "evidence": [
2026-06-22T02:23:00.4291616Z             {
2026-06-22T02:23:00.4291725Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4291811Z               "line": 369
2026-06-22T02:23:00.4291889Z             },
2026-06-22T02:23:00.4291973Z             {
2026-06-22T02:23:00.4292083Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4292165Z               "line": 636
2026-06-22T02:23:00.4292246Z             },
2026-06-22T02:23:00.4292316Z             {
2026-06-22T02:23:00.4292420Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4292501Z               "line": 116
2026-06-22T02:23:00.4292586Z             },
2026-06-22T02:23:00.4292671Z             {
2026-06-22T02:23:00.4292770Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4292857Z               "line": 160
2026-06-22T02:23:00.4292934Z             }
2026-06-22T02:23:00.4293014Z           ]
2026-06-22T02:23:00.4293095Z         }
2026-06-22T02:23:00.4293168Z       }
2026-06-22T02:23:00.4293248Z     },
2026-06-22T02:23:00.4293328Z     {
2026-06-22T02:23:00.4293419Z       "id": "REQ-INST-9",
2026-06-22T02:23:00.4293596Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-22T02:23:00.4293686Z       "requiredStages": [
2026-06-22T02:23:00.4293763Z         "impl",
2026-06-22T02:23:00.4293849Z         "unit"
2026-06-22T02:23:00.4293925Z       ],
2026-06-22T02:23:00.4294015Z       "stages": {
2026-06-22T02:23:00.4294097Z         "doc": {
2026-06-22T02:23:00.4294187Z           "complete": false,
2026-06-22T02:23:00.4294273Z           "evidence": []
2026-06-22T02:23:00.4294344Z         },
2026-06-22T02:23:00.4294432Z         "impl": {
2026-06-22T02:23:00.4294626Z           "complete": true,
2026-06-22T02:23:00.4294708Z           "evidence": [
2026-06-22T02:23:00.4294878Z             {
2026-06-22T02:23:00.4294993Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4295080Z               "line": 449
2026-06-22T02:23:00.4295160Z             }
2026-06-22T02:23:00.4295245Z           ]
2026-06-22T02:23:00.4295325Z         },
2026-06-22T02:23:00.4295407Z         "int": {
2026-06-22T02:23:00.4295503Z           "complete": false,
2026-06-22T02:23:00.4295588Z           "evidence": []
2026-06-22T02:23:00.4295669Z         },
2026-06-22T02:23:00.4295751Z         "unit": {
2026-06-22T02:23:00.4295841Z           "complete": true,
2026-06-22T02:23:00.4295926Z           "evidence": [
2026-06-22T02:23:00.4296008Z             {
2026-06-22T02:23:00.4296127Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4296212Z               "line": 1397
2026-06-22T02:23:00.4296299Z             },
2026-06-22T02:23:00.4296385Z             {
2026-06-22T02:23:00.4296504Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4296603Z               "line": 1406
2026-06-22T02:23:00.4296681Z             },
2026-06-22T02:23:00.4296757Z             {
2026-06-22T02:23:00.4296861Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4296943Z               "line": 1422
2026-06-22T02:23:00.4297019Z             },
2026-06-22T02:23:00.4297104Z             {
2026-06-22T02:23:00.4297209Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4297301Z               "line": 1434
2026-06-22T02:23:00.4297386Z             },
2026-06-22T02:23:00.4297457Z             {
2026-06-22T02:23:00.4297570Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4297651Z               "line": 1454
2026-06-22T02:23:00.4297736Z             }
2026-06-22T02:23:00.4297816Z           ]
2026-06-22T02:23:00.4297897Z         }
2026-06-22T02:23:00.4297978Z       }
2026-06-22T02:23:00.4298061Z     },
2026-06-22T02:23:00.4298144Z     {
2026-06-22T02:23:00.4298231Z       "id": "REQ-INSTALL-1",
2026-06-22T02:23:00.4298422Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-22T02:23:00.4298517Z       "requiredStages": [
2026-06-22T02:23:00.4298599Z         "doc",
2026-06-22T02:23:00.4298675Z         "impl",
2026-06-22T02:23:00.4298760Z         "int"
2026-06-22T02:23:00.4298841Z       ],
2026-06-22T02:23:00.4298918Z       "stages": {
2026-06-22T02:23:00.4299080Z         "doc": {
2026-06-22T02:23:00.4299166Z           "complete": true,
2026-06-22T02:23:00.4299247Z           "evidence": [
2026-06-22T02:23:00.4299323Z             {
2026-06-22T02:23:00.4299414Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4299490Z               "line": 754
2026-06-22T02:23:00.4299567Z             }
2026-06-22T02:23:00.4299647Z           ]
2026-06-22T02:23:00.4299729Z         },
2026-06-22T02:23:00.4299810Z         "impl": {
2026-06-22T02:23:00.4299896Z           "complete": true,
2026-06-22T02:23:00.4299981Z           "evidence": [
2026-06-22T02:23:00.4300067Z             {
2026-06-22T02:23:00.4300168Z               "path": "installer/install.ps1",
2026-06-22T02:23:00.4300259Z               "line": 57
2026-06-22T02:23:00.4300338Z             },
2026-06-22T02:23:00.4300404Z             {
2026-06-22T02:23:00.4300509Z               "path": "installer/install.sh",
2026-06-22T02:23:00.4300594Z               "line": 52
2026-06-22T02:23:00.4300678Z             }
2026-06-22T02:23:00.4300759Z           ]
2026-06-22T02:23:00.4300845Z         },
2026-06-22T02:23:00.4300922Z         "int": {
2026-06-22T02:23:00.4301016Z           "complete": true,
2026-06-22T02:23:00.4301102Z           "evidence": [
2026-06-22T02:23:00.4301180Z             {
2026-06-22T02:23:00.4301289Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:23:00.4301369Z               "line": 21
2026-06-22T02:23:00.4301447Z             }
2026-06-22T02:23:00.4301637Z           ]
2026-06-22T02:23:00.4301713Z         },
2026-06-22T02:23:00.4301795Z         "unit": {
2026-06-22T02:23:00.4301975Z           "complete": false,
2026-06-22T02:23:00.4302061Z           "evidence": []
2026-06-22T02:23:00.4302139Z         }
2026-06-22T02:23:00.4302218Z       }
2026-06-22T02:23:00.4302299Z     },
2026-06-22T02:23:00.4302376Z     {
2026-06-22T02:23:00.4302473Z       "id": "REQ-INSTALL-10",
2026-06-22T02:23:00.4303832Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-22T02:23:00.4303927Z       "requiredStages": [
2026-06-22T02:23:00.4304008Z         "impl",
2026-06-22T02:23:00.4304089Z         "unit"
2026-06-22T02:23:00.4304194Z       ],
2026-06-22T02:23:00.4304275Z       "stages": {
2026-06-22T02:23:00.4304362Z         "doc": {
2026-06-22T02:23:00.4304456Z           "complete": false,
2026-06-22T02:23:00.4304537Z           "evidence": []
2026-06-22T02:23:00.4304623Z         },
2026-06-22T02:23:00.4304705Z         "impl": {
2026-06-22T02:23:00.4304800Z           "complete": true,
2026-06-22T02:23:00.4304881Z           "evidence": [
2026-06-22T02:23:00.4304962Z             {
2026-06-22T02:23:00.4305071Z               "path": "installer/install.ps1",
2026-06-22T02:23:00.4305167Z               "line": 191
2026-06-22T02:23:00.4305248Z             }
2026-06-22T02:23:00.4305331Z           ]
2026-06-22T02:23:00.4305414Z         },
2026-06-22T02:23:00.4305491Z         "int": {
2026-06-22T02:23:00.4305588Z           "complete": false,
2026-06-22T02:23:00.4305673Z           "evidence": []
2026-06-22T02:23:00.4305757Z         },
2026-06-22T02:23:00.4305838Z         "unit": {
2026-06-22T02:23:00.4305933Z           "complete": true,
2026-06-22T02:23:00.4306025Z           "evidence": [
2026-06-22T02:23:00.4306105Z             {
2026-06-22T02:23:00.4306229Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:23:00.4306316Z               "line": 211
2026-06-22T02:23:00.4306397Z             }
2026-06-22T02:23:00.4306482Z           ]
2026-06-22T02:23:00.4306558Z         }
2026-06-22T02:23:00.4306640Z       }
2026-06-22T02:23:00.4306711Z     },
2026-06-22T02:23:00.4306796Z     {
2026-06-22T02:23:00.4306897Z       "id": "REQ-INSTALL-11",
2026-06-22T02:23:00.4308630Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-22T02:23:00.4308743Z       "requiredStages": [
2026-06-22T02:23:00.4308825Z         "doc",
2026-06-22T02:23:00.4308906Z         "impl",
2026-06-22T02:23:00.4309067Z         "unit"
2026-06-22T02:23:00.4309150Z       ],
2026-06-22T02:23:00.4309235Z       "stages": {
2026-06-22T02:23:00.4309306Z         "doc": {
2026-06-22T02:23:00.4309406Z           "complete": true,
2026-06-22T02:23:00.4309493Z           "evidence": [
2026-06-22T02:23:00.4309578Z             {
2026-06-22T02:23:00.4309673Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4309754Z               "line": 138
2026-06-22T02:23:00.4309836Z             },
2026-06-22T02:23:00.4309916Z             {
2026-06-22T02:23:00.4310011Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.4310099Z               "line": 82
2026-06-22T02:23:00.4310179Z             }
2026-06-22T02:23:00.4310365Z           ]
2026-06-22T02:23:00.4310447Z         },
2026-06-22T02:23:00.4310532Z         "impl": {
2026-06-22T02:23:00.4310709Z           "complete": true,
2026-06-22T02:23:00.4310795Z           "evidence": [
2026-06-22T02:23:00.4310879Z             {
2026-06-22T02:23:00.4310998Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.4311083Z               "line": 223
2026-06-22T02:23:00.4311164Z             },
2026-06-22T02:23:00.4311243Z             {
2026-06-22T02:23:00.4311358Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4311435Z               "line": 99
2026-06-22T02:23:00.4311516Z             },
2026-06-22T02:23:00.4311596Z             {
2026-06-22T02:23:00.4311697Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.4311787Z               "line": 117
2026-06-22T02:23:00.4311868Z             },
2026-06-22T02:23:00.4311949Z             {
2026-06-22T02:23:00.4312064Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:23:00.4312145Z               "line": 332
2026-06-22T02:23:00.4312230Z             },
2026-06-22T02:23:00.4312321Z             {
2026-06-22T02:23:00.4312431Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.4312512Z               "line": 88
2026-06-22T02:23:00.4312588Z             },
2026-06-22T02:23:00.4312660Z             {
2026-06-22T02:23:00.4312769Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.4312855Z               "line": 104
2026-06-22T02:23:00.4312936Z             },
2026-06-22T02:23:00.4313013Z             {
2026-06-22T02:23:00.4313121Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4313208Z               "line": 297
2026-06-22T02:23:00.4313290Z             },
2026-06-22T02:23:00.4313362Z             {
2026-06-22T02:23:00.4313474Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4313564Z               "line": 332
2026-06-22T02:23:00.4313655Z             },
2026-06-22T02:23:00.4313735Z             {
2026-06-22T02:23:00.4313834Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4313930Z               "line": 523
2026-06-22T02:23:00.4314006Z             },
2026-06-22T02:23:00.4314092Z             {
2026-06-22T02:23:00.4314210Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4314298Z               "line": 546
2026-06-22T02:23:00.4314383Z             },
2026-06-22T02:23:00.4314458Z             {
2026-06-22T02:23:00.4314578Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4314659Z               "line": 561
2026-06-22T02:23:00.4314740Z             },
2026-06-22T02:23:00.4314825Z             {
2026-06-22T02:23:00.4314927Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.4315011Z               "line": 492
2026-06-22T02:23:00.4315088Z             }
2026-06-22T02:23:00.4315169Z           ]
2026-06-22T02:23:00.4315242Z         },
2026-06-22T02:23:00.4315336Z         "int": {
2026-06-22T02:23:00.4315431Z           "complete": false,
2026-06-22T02:23:00.4315508Z           "evidence": []
2026-06-22T02:23:00.4315604Z         },
2026-06-22T02:23:00.4315683Z         "unit": {
2026-06-22T02:23:00.4315765Z           "complete": true,
2026-06-22T02:23:00.4315847Z           "evidence": [
2026-06-22T02:23:00.4315928Z             {
2026-06-22T02:23:00.4316046Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4316123Z               "line": 799
2026-06-22T02:23:00.4316205Z             },
2026-06-22T02:23:00.4316280Z             {
2026-06-22T02:23:00.4316394Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4316470Z               "line": 811
2026-06-22T02:23:00.4316551Z             },
2026-06-22T02:23:00.4316632Z             {
2026-06-22T02:23:00.4316746Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4316837Z               "line": 820
2026-06-22T02:23:00.4316918Z             }
2026-06-22T02:23:00.4317099Z           ]
2026-06-22T02:23:00.4317181Z         }
2026-06-22T02:23:00.4317262Z       }
2026-06-22T02:23:00.4317404Z     },
2026-06-22T02:23:00.4317482Z     {
2026-06-22T02:23:00.4317572Z       "id": "REQ-INSTALL-12",
2026-06-22T02:23:00.4320233Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-22T02:23:00.4320339Z       "requiredStages": [
2026-06-22T02:23:00.4320424Z         "doc",
2026-06-22T02:23:00.4320505Z         "impl",
2026-06-22T02:23:00.4320581Z         "unit",
2026-06-22T02:23:00.4320664Z         "int"
2026-06-22T02:23:00.4320735Z       ],
2026-06-22T02:23:00.4320810Z       "stages": {
2026-06-22T02:23:00.4320896Z         "doc": {
2026-06-22T02:23:00.4320988Z           "complete": true,
2026-06-22T02:23:00.4321073Z           "evidence": [
2026-06-22T02:23:00.4321158Z             {
2026-06-22T02:23:00.4321250Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4321327Z               "line": 185
2026-06-22T02:23:00.4321411Z             }
2026-06-22T02:23:00.4321486Z           ]
2026-06-22T02:23:00.4321572Z         },
2026-06-22T02:23:00.4321653Z         "impl": {
2026-06-22T02:23:00.4321752Z           "complete": true,
2026-06-22T02:23:00.4321846Z           "evidence": [
2026-06-22T02:23:00.4321923Z             {
2026-06-22T02:23:00.4322033Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4322132Z               "line": 27
2026-06-22T02:23:00.4322213Z             },
2026-06-22T02:23:00.4322300Z             {
2026-06-22T02:23:00.4322419Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4322499Z               "line": 223
2026-06-22T02:23:00.4322582Z             },
2026-06-22T02:23:00.4322662Z             {
2026-06-22T02:23:00.4322757Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4322848Z               "line": 5677
2026-06-22T02:23:00.4322915Z             }
2026-06-22T02:23:00.4323001Z           ]
2026-06-22T02:23:00.4323086Z         },
2026-06-22T02:23:00.4323167Z         "int": {
2026-06-22T02:23:00.4323244Z           "complete": true,
2026-06-22T02:23:00.4323334Z           "evidence": [
2026-06-22T02:23:00.4323415Z             {
2026-06-22T02:23:00.4323540Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:23:00.4323626Z               "line": 19
2026-06-22T02:23:00.4323710Z             }
2026-06-22T02:23:00.4323792Z           ]
2026-06-22T02:23:00.4323874Z         },
2026-06-22T02:23:00.4323955Z         "unit": {
2026-06-22T02:23:00.4326977Z           "complete": true,
2026-06-22T02:23:00.4327083Z           "evidence": [
2026-06-22T02:23:00.4327169Z             {
2026-06-22T02:23:00.4327306Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4327388Z               "line": 395
2026-06-22T02:23:00.4327469Z             },
2026-06-22T02:23:00.4327554Z             {
2026-06-22T02:23:00.4327674Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4327751Z               "line": 421
2026-06-22T02:23:00.4327836Z             },
2026-06-22T02:23:00.4327916Z             {
2026-06-22T02:23:00.4328022Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4328255Z               "line": 440
2026-06-22T02:23:00.4328332Z             },
2026-06-22T02:23:00.4328408Z             {
2026-06-22T02:23:00.4328603Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4328691Z               "line": 475
2026-06-22T02:23:00.4328775Z             },
2026-06-22T02:23:00.4328856Z             {
2026-06-22T02:23:00.4329048Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4329127Z               "line": 8665
2026-06-22T02:23:00.4329203Z             }
2026-06-22T02:23:00.4329279Z           ]
2026-06-22T02:23:00.4329379Z         }
2026-06-22T02:23:00.4329458Z       }
2026-06-22T02:23:00.4329539Z     },
2026-06-22T02:23:00.4329620Z     {
2026-06-22T02:23:00.4329717Z       "id": "REQ-INSTALL-2",
2026-06-22T02:23:00.4329844Z       "title": "Marketplace-repackaging-friendly install",
2026-06-22T02:23:00.4329935Z       "requiredStages": [
2026-06-22T02:23:00.4330017Z         "doc"
2026-06-22T02:23:00.4330097Z       ],
2026-06-22T02:23:00.4330178Z       "stages": {
2026-06-22T02:23:00.4330270Z         "doc": {
2026-06-22T02:23:00.4330350Z           "complete": true,
2026-06-22T02:23:00.4330435Z           "evidence": [
2026-06-22T02:23:00.4330516Z             {
2026-06-22T02:23:00.4330613Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4330699Z               "line": 755
2026-06-22T02:23:00.4330779Z             }
2026-06-22T02:23:00.4330860Z           ]
2026-06-22T02:23:00.4330928Z         },
2026-06-22T02:23:00.4331008Z         "impl": {
2026-06-22T02:23:00.4331094Z           "complete": false,
2026-06-22T02:23:00.4331180Z           "evidence": []
2026-06-22T02:23:00.4331262Z         },
2026-06-22T02:23:00.4331337Z         "int": {
2026-06-22T02:23:00.4331428Z           "complete": false,
2026-06-22T02:23:00.4331514Z           "evidence": []
2026-06-22T02:23:00.4331595Z         },
2026-06-22T02:23:00.4331675Z         "unit": {
2026-06-22T02:23:00.4331762Z           "complete": false,
2026-06-22T02:23:00.4331843Z           "evidence": []
2026-06-22T02:23:00.4331925Z         }
2026-06-22T02:23:00.4332009Z       }
2026-06-22T02:23:00.4332080Z     },
2026-06-22T02:23:00.4332170Z     {
2026-06-22T02:23:00.4332260Z       "id": "REQ-INSTALL-3",
2026-06-22T02:23:00.4332401Z       "title": "Idempotent + interactive-optional first run",
2026-06-22T02:23:00.4332492Z       "requiredStages": [
2026-06-22T02:23:00.4332574Z         "impl",
2026-06-22T02:23:00.4332655Z         "int"
2026-06-22T02:23:00.4332735Z       ],
2026-06-22T02:23:00.4332817Z       "stages": {
2026-06-22T02:23:00.4332899Z         "doc": {
2026-06-22T02:23:00.4332988Z           "complete": false,
2026-06-22T02:23:00.4333069Z           "evidence": []
2026-06-22T02:23:00.4333151Z         },
2026-06-22T02:23:00.4333232Z         "impl": {
2026-06-22T02:23:00.4333317Z           "complete": true,
2026-06-22T02:23:00.4333413Z           "evidence": [
2026-06-22T02:23:00.4333490Z             {
2026-06-22T02:23:00.4333594Z               "path": "installer/install.ps1",
2026-06-22T02:23:00.4333675Z               "line": 100
2026-06-22T02:23:00.4333761Z             },
2026-06-22T02:23:00.4333838Z             {
2026-06-22T02:23:00.4333937Z               "path": "installer/install.ps1",
2026-06-22T02:23:00.4334023Z               "line": 111
2026-06-22T02:23:00.4334106Z             },
2026-06-22T02:23:00.4334181Z             {
2026-06-22T02:23:00.4334285Z               "path": "installer/install.sh",
2026-06-22T02:23:00.4334367Z               "line": 79
2026-06-22T02:23:00.4334453Z             }
2026-06-22T02:23:00.4334529Z           ]
2026-06-22T02:23:00.4334613Z         },
2026-06-22T02:23:00.4334694Z         "int": {
2026-06-22T02:23:00.4334780Z           "complete": true,
2026-06-22T02:23:00.4334865Z           "evidence": [
2026-06-22T02:23:00.4334944Z             {
2026-06-22T02:23:00.4335050Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:23:00.4335136Z               "line": 167
2026-06-22T02:23:00.4335217Z             }
2026-06-22T02:23:00.4335292Z           ]
2026-06-22T02:23:00.4335479Z         },
2026-06-22T02:23:00.4335565Z         "unit": {
2026-06-22T02:23:00.4335646Z           "complete": false,
2026-06-22T02:23:00.4335822Z           "evidence": []
2026-06-22T02:23:00.4335903Z         }
2026-06-22T02:23:00.4335974Z       }
2026-06-22T02:23:00.4336056Z     },
2026-06-22T02:23:00.4336137Z     {
2026-06-22T02:23:00.4336232Z       "id": "REQ-INSTALL-4",
2026-06-22T02:23:00.4336838Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-22T02:23:00.4336933Z       "requiredStages": [
2026-06-22T02:23:00.4337015Z         "impl",
2026-06-22T02:23:00.4337095Z         "unit"
2026-06-22T02:23:00.4337176Z       ],
2026-06-22T02:23:00.4337263Z       "stages": {
2026-06-22T02:23:00.4337349Z         "doc": {
2026-06-22T02:23:00.4337434Z           "complete": false,
2026-06-22T02:23:00.4337519Z           "evidence": []
2026-06-22T02:23:00.4337604Z         },
2026-06-22T02:23:00.4337691Z         "impl": {
2026-06-22T02:23:00.4337781Z           "complete": true,
2026-06-22T02:23:00.4337866Z           "evidence": [
2026-06-22T02:23:00.4337948Z             {
2026-06-22T02:23:00.4338068Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.4338157Z               "line": 165
2026-06-22T02:23:00.4338239Z             },
2026-06-22T02:23:00.4338316Z             {
2026-06-22T02:23:00.4338425Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4338520Z               "line": 29
2026-06-22T02:23:00.4338602Z             },
2026-06-22T02:23:00.4338677Z             {
2026-06-22T02:23:00.4338796Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4338868Z               "line": 288
2026-06-22T02:23:00.4339030Z             },
2026-06-22T02:23:00.4339111Z             {
2026-06-22T02:23:00.4339217Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4339312Z               "line": 356
2026-06-22T02:23:00.4339392Z             },
2026-06-22T02:23:00.4339483Z             {
2026-06-22T02:23:00.4339585Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4339673Z               "line": 386
2026-06-22T02:23:00.4339754Z             },
2026-06-22T02:23:00.4339830Z             {
2026-06-22T02:23:00.4339939Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4340023Z               "line": 434
2026-06-22T02:23:00.4340108Z             },
2026-06-22T02:23:00.4340190Z             {
2026-06-22T02:23:00.4340296Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4340376Z               "line": 5396
2026-06-22T02:23:00.4340452Z             }
2026-06-22T02:23:00.4340534Z           ]
2026-06-22T02:23:00.4340610Z         },
2026-06-22T02:23:00.4340695Z         "int": {
2026-06-22T02:23:00.4340781Z           "complete": false,
2026-06-22T02:23:00.4340863Z           "evidence": []
2026-06-22T02:23:00.4340949Z         },
2026-06-22T02:23:00.4341029Z         "unit": {
2026-06-22T02:23:00.4341125Z           "complete": true,
2026-06-22T02:23:00.4341201Z           "evidence": [
2026-06-22T02:23:00.4341287Z             {
2026-06-22T02:23:00.4341406Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.4341493Z               "line": 375
2026-06-22T02:23:00.4341578Z             },
2026-06-22T02:23:00.4341654Z             {
2026-06-22T02:23:00.4341764Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4341845Z               "line": 808
2026-06-22T02:23:00.4341930Z             },
2026-06-22T02:23:00.4342012Z             {
2026-06-22T02:23:00.4342118Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4342202Z               "line": 849
2026-06-22T02:23:00.4342283Z             },
2026-06-22T02:23:00.4342365Z             {
2026-06-22T02:23:00.4342471Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4342649Z               "line": 869
2026-06-22T02:23:00.4342730Z             },
2026-06-22T02:23:00.4342910Z             {
2026-06-22T02:23:00.4343014Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4343096Z               "line": 8403
2026-06-22T02:23:00.4343172Z             }
2026-06-22T02:23:00.4343248Z           ]
2026-06-22T02:23:00.4343319Z         }
2026-06-22T02:23:00.4343397Z       }
2026-06-22T02:23:00.4343482Z     },
2026-06-22T02:23:00.4343558Z     {
2026-06-22T02:23:00.4343638Z       "id": "REQ-INSTALL-5",
2026-06-22T02:23:00.4344102Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-22T02:23:00.4344183Z       "requiredStages": [
2026-06-22T02:23:00.4344268Z         "impl",
2026-06-22T02:23:00.4344351Z         "int"
2026-06-22T02:23:00.4344422Z       ],
2026-06-22T02:23:00.4344502Z       "stages": {
2026-06-22T02:23:00.4344592Z         "doc": {
2026-06-22T02:23:00.4344680Z           "complete": false,
2026-06-22T02:23:00.4344774Z           "evidence": []
2026-06-22T02:23:00.4344850Z         },
2026-06-22T02:23:00.4344932Z         "impl": {
2026-06-22T02:23:00.4345018Z           "complete": true,
2026-06-22T02:23:00.4345103Z           "evidence": [
2026-06-22T02:23:00.4345187Z             {
2026-06-22T02:23:00.4345288Z               "path": "installer/install.ps1",
2026-06-22T02:23:00.4345373Z               "line": 5
2026-06-22T02:23:00.4345448Z             },
2026-06-22T02:23:00.4345523Z             {
2026-06-22T02:23:00.4345624Z               "path": "installer/install.sh",
2026-06-22T02:23:00.4345701Z               "line": 6
2026-06-22T02:23:00.4345777Z             }
2026-06-22T02:23:00.4345857Z           ]
2026-06-22T02:23:00.4345924Z         },
2026-06-22T02:23:00.4346006Z         "int": {
2026-06-22T02:23:00.4346092Z           "complete": true,
2026-06-22T02:23:00.4346181Z           "evidence": [
2026-06-22T02:23:00.4346269Z             {
2026-06-22T02:23:00.4346382Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:23:00.4346477Z               "line": 22
2026-06-22T02:23:00.4346549Z             }
2026-06-22T02:23:00.4346621Z           ]
2026-06-22T02:23:00.4346706Z         },
2026-06-22T02:23:00.4346783Z         "unit": {
2026-06-22T02:23:00.4346868Z           "complete": false,
2026-06-22T02:23:00.4346955Z           "evidence": []
2026-06-22T02:23:00.4347035Z         }
2026-06-22T02:23:00.4347112Z       }
2026-06-22T02:23:00.4347193Z     },
2026-06-22T02:23:00.4347275Z     {
2026-06-22T02:23:00.4347369Z       "id": "REQ-INSTALL-6",
2026-06-22T02:23:00.4348571Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-22T02:23:00.4348661Z       "requiredStages": [
2026-06-22T02:23:00.4348755Z         "impl",
2026-06-22T02:23:00.4348833Z         "unit"
2026-06-22T02:23:00.4348913Z       ],
2026-06-22T02:23:00.4349075Z       "stages": {
2026-06-22T02:23:00.4349152Z         "doc": {
2026-06-22T02:23:00.4349233Z           "complete": false,
2026-06-22T02:23:00.4349319Z           "evidence": []
2026-06-22T02:23:00.4349409Z         },
2026-06-22T02:23:00.4349486Z         "impl": {
2026-06-22T02:23:00.4349566Z           "complete": true,
2026-06-22T02:23:00.4349643Z           "evidence": [
2026-06-22T02:23:00.4349714Z             {
2026-06-22T02:23:00.4349839Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4349918Z               "line": 61
2026-06-22T02:23:00.4350000Z             },
2026-06-22T02:23:00.4350077Z             {
2026-06-22T02:23:00.4350192Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.4350380Z               "line": 641
2026-06-22T02:23:00.4350462Z             },
2026-06-22T02:23:00.4350631Z             {
2026-06-22T02:23:00.4350750Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.4350837Z               "line": 191
2026-06-22T02:23:00.4350917Z             },
2026-06-22T02:23:00.4350988Z             {
2026-06-22T02:23:00.4351104Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.4351185Z               "line": 276
2026-06-22T02:23:00.4351270Z             },
2026-06-22T02:23:00.4351346Z             {
2026-06-22T02:23:00.4351452Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:23:00.4351533Z               "line": 43
2026-06-22T02:23:00.4351613Z             },
2026-06-22T02:23:00.4351695Z             {
2026-06-22T02:23:00.4351790Z               "path": "installer/install.sh",
2026-06-22T02:23:00.4351866Z               "line": 104
2026-06-22T02:23:00.4351942Z             }
2026-06-22T02:23:00.4352029Z           ]
2026-06-22T02:23:00.4352109Z         },
2026-06-22T02:23:00.4352181Z         "int": {
2026-06-22T02:23:00.4352290Z           "complete": false,
2026-06-22T02:23:00.4352373Z           "evidence": []
2026-06-22T02:23:00.4352447Z         },
2026-06-22T02:23:00.4352524Z         "unit": {
2026-06-22T02:23:00.4352605Z           "complete": true,
2026-06-22T02:23:00.4352683Z           "evidence": [
2026-06-22T02:23:00.4352762Z             {
2026-06-22T02:23:00.4352887Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:23:00.4352973Z               "line": 894
2026-06-22T02:23:00.4353050Z             }
2026-06-22T02:23:00.4353119Z           ]
2026-06-22T02:23:00.4353200Z         }
2026-06-22T02:23:00.4353281Z       }
2026-06-22T02:23:00.4353353Z     },
2026-06-22T02:23:00.4353436Z     {
2026-06-22T02:23:00.4353512Z       "id": "REQ-INSTALL-7",
2026-06-22T02:23:00.4354610Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-22T02:23:00.4354714Z       "requiredStages": [
2026-06-22T02:23:00.4354790Z         "impl"
2026-06-22T02:23:00.4354867Z       ],
2026-06-22T02:23:00.4354953Z       "stages": {
2026-06-22T02:23:00.4355034Z         "doc": {
2026-06-22T02:23:00.4355115Z           "complete": false,
2026-06-22T02:23:00.4355196Z           "evidence": []
2026-06-22T02:23:00.4355277Z         },
2026-06-22T02:23:00.4355362Z         "impl": {
2026-06-22T02:23:00.4355453Z           "complete": true,
2026-06-22T02:23:00.4355535Z           "evidence": [
2026-06-22T02:23:00.4355616Z             {
2026-06-22T02:23:00.4355706Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4355781Z               "line": 3920
2026-06-22T02:23:00.4355862Z             },
2026-06-22T02:23:00.4355952Z             {
2026-06-22T02:23:00.4356051Z               "path": "installer/install.ps1",
2026-06-22T02:23:00.4356141Z               "line": 157
2026-06-22T02:23:00.4356222Z             }
2026-06-22T02:23:00.4356300Z           ]
2026-06-22T02:23:00.4356380Z         },
2026-06-22T02:23:00.4356461Z         "int": {
2026-06-22T02:23:00.4356547Z           "complete": false,
2026-06-22T02:23:00.4356628Z           "evidence": []
2026-06-22T02:23:00.4356699Z         },
2026-06-22T02:23:00.4356780Z         "unit": {
2026-06-22T02:23:00.4356867Z           "complete": false,
2026-06-22T02:23:00.4356957Z           "evidence": []
2026-06-22T02:23:00.4357042Z         }
2026-06-22T02:23:00.4357119Z       }
2026-06-22T02:23:00.4357200Z     },
2026-06-22T02:23:00.4357281Z     {
2026-06-22T02:23:00.4357376Z       "id": "REQ-INSTALL-8",
2026-06-22T02:23:00.4358378Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-22T02:23:00.4358615Z       "requiredStages": [
2026-06-22T02:23:00.4358700Z         "impl"
2026-06-22T02:23:00.4358782Z       ],
2026-06-22T02:23:00.4358864Z       "stages": {
2026-06-22T02:23:00.4358939Z         "doc": {
2026-06-22T02:23:00.4359102Z           "complete": false,
2026-06-22T02:23:00.4359188Z           "evidence": []
2026-06-22T02:23:00.4359263Z         },
2026-06-22T02:23:00.4359354Z         "impl": {
2026-06-22T02:23:00.4359441Z           "complete": true,
2026-06-22T02:23:00.4359531Z           "evidence": [
2026-06-22T02:23:00.4359606Z             {
2026-06-22T02:23:00.4359703Z               "path": "installer/install.ps1",
2026-06-22T02:23:00.4359789Z               "line": 184
2026-06-22T02:23:00.4359870Z             },
2026-06-22T02:23:00.4359950Z             {
2026-06-22T02:23:00.4360051Z               "path": "installer/install.sh",
2026-06-22T02:23:00.4360145Z               "line": 121
2026-06-22T02:23:00.4360222Z             }
2026-06-22T02:23:00.4360303Z           ]
2026-06-22T02:23:00.4360385Z         },
2026-06-22T02:23:00.4360465Z         "int": {
2026-06-22T02:23:00.4360555Z           "complete": false,
2026-06-22T02:23:00.4360637Z           "evidence": []
2026-06-22T02:23:00.4360719Z         },
2026-06-22T02:23:00.4360798Z         "unit": {
2026-06-22T02:23:00.4360884Z           "complete": false,
2026-06-22T02:23:00.4360974Z           "evidence": []
2026-06-22T02:23:00.4361060Z         }
2026-06-22T02:23:00.4361144Z       }
2026-06-22T02:23:00.4361224Z     },
2026-06-22T02:23:00.4361301Z     {
2026-06-22T02:23:00.4361392Z       "id": "REQ-INSTALL-9",
2026-06-22T02:23:00.4362565Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-22T02:23:00.4362665Z       "requiredStages": [
2026-06-22T02:23:00.4362746Z         "doc",
2026-06-22T02:23:00.4362831Z         "impl",
2026-06-22T02:23:00.4362909Z         "unit"
2026-06-22T02:23:00.4362989Z       ],
2026-06-22T02:23:00.4363075Z       "stages": {
2026-06-22T02:23:00.4363161Z         "doc": {
2026-06-22T02:23:00.4363257Z           "complete": true,
2026-06-22T02:23:00.4363332Z           "evidence": [
2026-06-22T02:23:00.4363413Z             {
2026-06-22T02:23:00.4363500Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4363586Z               "line": 771
2026-06-22T02:23:00.4363656Z             }
2026-06-22T02:23:00.4363732Z           ]
2026-06-22T02:23:00.4363812Z         },
2026-06-22T02:23:00.4363908Z         "impl": {
2026-06-22T02:23:00.4364001Z           "complete": true,
2026-06-22T02:23:00.4364082Z           "evidence": [
2026-06-22T02:23:00.4364168Z             {
2026-06-22T02:23:00.4364269Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4364354Z               "line": 2535
2026-06-22T02:23:00.4364434Z             },
2026-06-22T02:23:00.4364517Z             {
2026-06-22T02:23:00.4364607Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4364687Z               "line": 2559
2026-06-22T02:23:00.4364759Z             }
2026-06-22T02:23:00.4364841Z           ]
2026-06-22T02:23:00.4364912Z         },
2026-06-22T02:23:00.4365002Z         "int": {
2026-06-22T02:23:00.4365088Z           "complete": false,
2026-06-22T02:23:00.4365175Z           "evidence": []
2026-06-22T02:23:00.4365250Z         },
2026-06-22T02:23:00.4365331Z         "unit": {
2026-06-22T02:23:00.4365422Z           "complete": true,
2026-06-22T02:23:00.4365509Z           "evidence": [
2026-06-22T02:23:00.4365699Z             {
2026-06-22T02:23:00.4365790Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4365985Z               "line": 7591
2026-06-22T02:23:00.4366067Z             },
2026-06-22T02:23:00.4366144Z             {
2026-06-22T02:23:00.4366246Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4366331Z               "line": 8433
2026-06-22T02:23:00.4366417Z             }
2026-06-22T02:23:00.4366493Z           ]
2026-06-22T02:23:00.4366577Z         }
2026-06-22T02:23:00.4366658Z       }
2026-06-22T02:23:00.4366735Z     },
2026-06-22T02:23:00.4366817Z     {
2026-06-22T02:23:00.4366911Z       "id": "REQ-KICK-1",
2026-06-22T02:23:00.4369433Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-22T02:23:00.4369551Z       "requiredStages": [
2026-06-22T02:23:00.4369633Z         "doc",
2026-06-22T02:23:00.4369715Z         "impl",
2026-06-22T02:23:00.4369795Z         "unit",
2026-06-22T02:23:00.4369875Z         "int"
2026-06-22T02:23:00.4369949Z       ],
2026-06-22T02:23:00.4370034Z       "stages": {
2026-06-22T02:23:00.4370115Z         "doc": {
2026-06-22T02:23:00.4370190Z           "complete": true,
2026-06-22T02:23:00.4370282Z           "evidence": [
2026-06-22T02:23:00.4370368Z             {
2026-06-22T02:23:00.4370467Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4370558Z               "line": 342
2026-06-22T02:23:00.4370644Z             }
2026-06-22T02:23:00.4370724Z           ]
2026-06-22T02:23:00.4370801Z         },
2026-06-22T02:23:00.4370883Z         "impl": {
2026-06-22T02:23:00.4370978Z           "complete": true,
2026-06-22T02:23:00.4371058Z           "evidence": [
2026-06-22T02:23:00.4371134Z             {
2026-06-22T02:23:00.4371255Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4371344Z               "line": 41
2026-06-22T02:23:00.4371415Z             },
2026-06-22T02:23:00.4371500Z             {
2026-06-22T02:23:00.4371601Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4371685Z               "line": 701
2026-06-22T02:23:00.4371770Z             }
2026-06-22T02:23:00.4371842Z           ]
2026-06-22T02:23:00.4371919Z         },
2026-06-22T02:23:00.4371996Z         "int": {
2026-06-22T02:23:00.4372094Z           "complete": true,
2026-06-22T02:23:00.4372171Z           "evidence": [
2026-06-22T02:23:00.4372262Z             {
2026-06-22T02:23:00.4372376Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4372466Z               "line": 916
2026-06-22T02:23:00.4372544Z             }
2026-06-22T02:23:00.4372624Z           ]
2026-06-22T02:23:00.4372704Z         },
2026-06-22T02:23:00.4372786Z         "unit": {
2026-06-22T02:23:00.4372868Z           "complete": true,
2026-06-22T02:23:00.4372958Z           "evidence": [
2026-06-22T02:23:00.4373038Z             {
2026-06-22T02:23:00.4373159Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4373239Z               "line": 205
2026-06-22T02:23:00.4373325Z             }
2026-06-22T02:23:00.4373406Z           ]
2026-06-22T02:23:00.4373483Z         }
2026-06-22T02:23:00.4373568Z       }
2026-06-22T02:23:00.4373649Z     },
2026-06-22T02:23:00.4373735Z     {
2026-06-22T02:23:00.4373939Z       "id": "REQ-MANIFEST-1",
2026-06-22T02:23:00.4374122Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-22T02:23:00.4374325Z       "requiredStages": [
2026-06-22T02:23:00.4374411Z         "doc",
2026-06-22T02:23:00.4374492Z         "impl",
2026-06-22T02:23:00.4374576Z         "unit"
2026-06-22T02:23:00.4374661Z       ],
2026-06-22T02:23:00.4374742Z       "stages": {
2026-06-22T02:23:00.4374834Z         "doc": {
2026-06-22T02:23:00.4374919Z           "complete": true,
2026-06-22T02:23:00.4375004Z           "evidence": [
2026-06-22T02:23:00.4375082Z             {
2026-06-22T02:23:00.4375187Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.4375276Z               "line": 19
2026-06-22T02:23:00.4375358Z             }
2026-06-22T02:23:00.4375435Z           ]
2026-06-22T02:23:00.4375516Z         },
2026-06-22T02:23:00.4375600Z         "impl": {
2026-06-22T02:23:00.4375677Z           "complete": true,
2026-06-22T02:23:00.4375764Z           "evidence": [
2026-06-22T02:23:00.4375859Z             {
2026-06-22T02:23:00.4375972Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4376069Z               "line": 18
2026-06-22T02:23:00.4376149Z             }
2026-06-22T02:23:00.4376230Z           ]
2026-06-22T02:23:00.4376312Z         },
2026-06-22T02:23:00.4376394Z         "int": {
2026-06-22T02:23:00.4376482Z           "complete": false,
2026-06-22T02:23:00.4376554Z           "evidence": []
2026-06-22T02:23:00.4376632Z         },
2026-06-22T02:23:00.4376704Z         "unit": {
2026-06-22T02:23:00.4376797Z           "complete": true,
2026-06-22T02:23:00.4376882Z           "evidence": [
2026-06-22T02:23:00.4376968Z             {
2026-06-22T02:23:00.4377086Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4377176Z               "line": 1029
2026-06-22T02:23:00.4377256Z             },
2026-06-22T02:23:00.4377338Z             {
2026-06-22T02:23:00.4377452Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4377542Z               "line": 1325
2026-06-22T02:23:00.4377624Z             },
2026-06-22T02:23:00.4377710Z             {
2026-06-22T02:23:00.4377814Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4377905Z               "line": 1337
2026-06-22T02:23:00.4377982Z             },
2026-06-22T02:23:00.4378063Z             {
2026-06-22T02:23:00.4378177Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4378273Z               "line": 1348
2026-06-22T02:23:00.4378358Z             },
2026-06-22T02:23:00.4378430Z             {
2026-06-22T02:23:00.4378549Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4378631Z               "line": 1365
2026-06-22T02:23:00.4378716Z             },
2026-06-22T02:23:00.4378797Z             {
2026-06-22T02:23:00.4378908Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4379069Z               "line": 1379
2026-06-22T02:23:00.4379150Z             },
2026-06-22T02:23:00.4379242Z             {
2026-06-22T02:23:00.4379340Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4379431Z               "line": 1495
2026-06-22T02:23:00.4379513Z             },
2026-06-22T02:23:00.4379594Z             {
2026-06-22T02:23:00.4379707Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4379792Z               "line": 1510
2026-06-22T02:23:00.4379874Z             },
2026-06-22T02:23:00.4379956Z             {
2026-06-22T02:23:00.4380064Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4380145Z               "line": 1621
2026-06-22T02:23:00.4380227Z             },
2026-06-22T02:23:00.4380313Z             {
2026-06-22T02:23:00.4380421Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4380509Z               "line": 1632
2026-06-22T02:23:00.4380589Z             }
2026-06-22T02:23:00.4380665Z           ]
2026-06-22T02:23:00.4380745Z         }
2026-06-22T02:23:00.4380933Z       }
2026-06-22T02:23:00.4381018Z     },
2026-06-22T02:23:00.4381094Z     {
2026-06-22T02:23:00.4381186Z       "id": "REQ-MANIFEST-2",
2026-06-22T02:23:00.4381767Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-22T02:23:00.4381867Z       "requiredStages": [
2026-06-22T02:23:00.4381952Z         "doc",
2026-06-22T02:23:00.4382023Z         "impl",
2026-06-22T02:23:00.4382104Z         "unit"
2026-06-22T02:23:00.4382175Z       ],
2026-06-22T02:23:00.4382259Z       "stages": {
2026-06-22T02:23:00.4382335Z         "doc": {
2026-06-22T02:23:00.4382426Z           "complete": true,
2026-06-22T02:23:00.4382512Z           "evidence": [
2026-06-22T02:23:00.4382593Z             {
2026-06-22T02:23:00.4382688Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4382769Z               "line": 75
2026-06-22T02:23:00.4382855Z             }
2026-06-22T02:23:00.4382936Z           ]
2026-06-22T02:23:00.4383022Z         },
2026-06-22T02:23:00.4383099Z         "impl": {
2026-06-22T02:23:00.4383184Z           "complete": true,
2026-06-22T02:23:00.4383279Z           "evidence": [
2026-06-22T02:23:00.4383356Z             {
2026-06-22T02:23:00.4383480Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4383566Z               "line": 82
2026-06-22T02:23:00.4383652Z             },
2026-06-22T02:23:00.4383733Z             {
2026-06-22T02:23:00.4383847Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4383923Z               "line": 15
2026-06-22T02:23:00.4384000Z             },
2026-06-22T02:23:00.4384086Z             {
2026-06-22T02:23:00.4384190Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4384276Z               "line": 65
2026-06-22T02:23:00.4384358Z             },
2026-06-22T02:23:00.4384429Z             {
2026-06-22T02:23:00.4384543Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4384635Z               "line": 83
2026-06-22T02:23:00.4384721Z             },
2026-06-22T02:23:00.4384800Z             {
2026-06-22T02:23:00.4384923Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4385014Z               "line": 183
2026-06-22T02:23:00.4385089Z             },
2026-06-22T02:23:00.4385178Z             {
2026-06-22T02:23:00.4385289Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4385375Z               "line": 527
2026-06-22T02:23:00.4385465Z             },
2026-06-22T02:23:00.4385541Z             {
2026-06-22T02:23:00.4385661Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4385742Z               "line": 553
2026-06-22T02:23:00.4385826Z             },
2026-06-22T02:23:00.4385903Z             {
2026-06-22T02:23:00.4386023Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4386113Z               "line": 671
2026-06-22T02:23:00.4386194Z             },
2026-06-22T02:23:00.4386281Z             {
2026-06-22T02:23:00.4386394Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4386490Z               "line": 696
2026-06-22T02:23:00.4386567Z             },
2026-06-22T02:23:00.4386653Z             {
2026-06-22T02:23:00.4386767Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4386848Z               "line": 719
2026-06-22T02:23:00.4386934Z             },
2026-06-22T02:23:00.4387014Z             {
2026-06-22T02:23:00.4387119Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4387202Z               "line": 734
2026-06-22T02:23:00.4387292Z             },
2026-06-22T02:23:00.4387371Z             {
2026-06-22T02:23:00.4387480Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4387566Z               "line": 5567
2026-06-22T02:23:00.4387642Z             },
2026-06-22T02:23:00.4387721Z             {
2026-06-22T02:23:00.4387826Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4387994Z               "line": 5581
2026-06-22T02:23:00.4388079Z             },
2026-06-22T02:23:00.4388228Z             {
2026-06-22T02:23:00.4388332Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4388413Z               "line": 5615
2026-06-22T02:23:00.4388490Z             }
2026-06-22T02:23:00.4388571Z           ]
2026-06-22T02:23:00.4388652Z         },
2026-06-22T02:23:00.4388737Z         "int": {
2026-06-22T02:23:00.4388824Z           "complete": false,
2026-06-22T02:23:00.4388914Z           "evidence": []
2026-06-22T02:23:00.4389052Z         },
2026-06-22T02:23:00.4389129Z         "unit": {
2026-06-22T02:23:00.4389214Z           "complete": true,
2026-06-22T02:23:00.4389300Z           "evidence": [
2026-06-22T02:23:00.4389390Z             {
2026-06-22T02:23:00.4389520Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.4389619Z               "line": 921
2026-06-22T02:23:00.4389691Z             },
2026-06-22T02:23:00.4389773Z             {
2026-06-22T02:23:00.4389886Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4389977Z               "line": 211
2026-06-22T02:23:00.4390059Z             },
2026-06-22T02:23:00.4390136Z             {
2026-06-22T02:23:00.4390252Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4390333Z               "line": 272
2026-06-22T02:23:00.4390414Z             },
2026-06-22T02:23:00.4390487Z             {
2026-06-22T02:23:00.4390605Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4390696Z               "line": 313
2026-06-22T02:23:00.4390778Z             },
2026-06-22T02:23:00.4390863Z             {
2026-06-22T02:23:00.4390972Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4391059Z               "line": 325
2026-06-22T02:23:00.4391140Z             },
2026-06-22T02:23:00.4391221Z             {
2026-06-22T02:23:00.4391335Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4391421Z               "line": 336
2026-06-22T02:23:00.4391507Z             },
2026-06-22T02:23:00.4391587Z             {
2026-06-22T02:23:00.4391698Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4391784Z               "line": 345
2026-06-22T02:23:00.4391864Z             },
2026-06-22T02:23:00.4391949Z             {
2026-06-22T02:23:00.4392061Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4392145Z               "line": 361
2026-06-22T02:23:00.4392226Z             },
2026-06-22T02:23:00.4392308Z             {
2026-06-22T02:23:00.4392418Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4392493Z               "line": 444
2026-06-22T02:23:00.4392578Z             },
2026-06-22T02:23:00.4392650Z             {
2026-06-22T02:23:00.4392773Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4392843Z               "line": 958
2026-06-22T02:23:00.4392928Z             },
2026-06-22T02:23:00.4393015Z             {
2026-06-22T02:23:00.4393120Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4395565Z               "line": 982
2026-06-22T02:23:00.4395668Z             },
2026-06-22T02:23:00.4395752Z             {
2026-06-22T02:23:00.4395877Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4395963Z               "line": 1008
2026-06-22T02:23:00.4396049Z             },
2026-06-22T02:23:00.4396125Z             {
2026-06-22T02:23:00.4396255Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4396340Z               "line": 1027
2026-06-22T02:23:00.4396420Z             },
2026-06-22T02:23:00.4396498Z             {
2026-06-22T02:23:00.4396616Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4396697Z               "line": 1058
2026-06-22T02:23:00.4396773Z             },
2026-06-22T02:23:00.4396850Z             {
2026-06-22T02:23:00.4396969Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.4397199Z               "line": 309
2026-06-22T02:23:00.4397269Z             },
2026-06-22T02:23:00.4397442Z             {
2026-06-22T02:23:00.4397547Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.4397621Z               "line": 606
2026-06-22T02:23:00.4397703Z             },
2026-06-22T02:23:00.4397786Z             {
2026-06-22T02:23:00.4397894Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4397969Z               "line": 8610
2026-06-22T02:23:00.4398059Z             },
2026-06-22T02:23:00.4398126Z             {
2026-06-22T02:23:00.4398221Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4398305Z               "line": 9558
2026-06-22T02:23:00.4398381Z             }
2026-06-22T02:23:00.4398463Z           ]
2026-06-22T02:23:00.4398536Z         }
2026-06-22T02:23:00.4398620Z       }
2026-06-22T02:23:00.4398701Z     },
2026-06-22T02:23:00.4398779Z     {
2026-06-22T02:23:00.4398879Z       "id": "REQ-MANIFEST-3",
2026-06-22T02:23:00.4399621Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-22T02:23:00.4399723Z       "requiredStages": [
2026-06-22T02:23:00.4399807Z         "doc",
2026-06-22T02:23:00.4399884Z         "impl",
2026-06-22T02:23:00.4399965Z         "unit"
2026-06-22T02:23:00.4400042Z       ],
2026-06-22T02:23:00.4400127Z       "stages": {
2026-06-22T02:23:00.4400203Z         "doc": {
2026-06-22T02:23:00.4400294Z           "complete": true,
2026-06-22T02:23:00.4400381Z           "evidence": [
2026-06-22T02:23:00.4400460Z             {
2026-06-22T02:23:00.4400556Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4400639Z               "line": 81
2026-06-22T02:23:00.4400720Z             }
2026-06-22T02:23:00.4400798Z           ]
2026-06-22T02:23:00.4400875Z         },
2026-06-22T02:23:00.4400961Z         "impl": {
2026-06-22T02:23:00.4401056Z           "complete": true,
2026-06-22T02:23:00.4401132Z           "evidence": [
2026-06-22T02:23:00.4401218Z             {
2026-06-22T02:23:00.4401347Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4401424Z               "line": 92
2026-06-22T02:23:00.4401504Z             },
2026-06-22T02:23:00.4401580Z             {
2026-06-22T02:23:00.4401700Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4401781Z               "line": 101
2026-06-22T02:23:00.4401861Z             },
2026-06-22T02:23:00.4401948Z             {
2026-06-22T02:23:00.4402062Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4402147Z               "line": 132
2026-06-22T02:23:00.4402234Z             },
2026-06-22T02:23:00.4402315Z             {
2026-06-22T02:23:00.4402424Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4402510Z               "line": 577
2026-06-22T02:23:00.4402592Z             },
2026-06-22T02:23:00.4402673Z             {
2026-06-22T02:23:00.4402782Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4402863Z               "line": 633
2026-06-22T02:23:00.4402945Z             },
2026-06-22T02:23:00.4403024Z             {
2026-06-22T02:23:00.4403124Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4403205Z               "line": 5628
2026-06-22T02:23:00.4403286Z             },
2026-06-22T02:23:00.4403365Z             {
2026-06-22T02:23:00.4403464Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4403546Z               "line": 5654
2026-06-22T02:23:00.4403628Z             }
2026-06-22T02:23:00.4403708Z           ]
2026-06-22T02:23:00.4403793Z         },
2026-06-22T02:23:00.4403876Z         "int": {
2026-06-22T02:23:00.4403957Z           "complete": false,
2026-06-22T02:23:00.4404042Z           "evidence": []
2026-06-22T02:23:00.4404122Z         },
2026-06-22T02:23:00.4404210Z         "unit": {
2026-06-22T02:23:00.4404295Z           "complete": true,
2026-06-22T02:23:00.4404506Z           "evidence": [
2026-06-22T02:23:00.4404591Z             {
2026-06-22T02:23:00.4404805Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4404891Z               "line": 371
2026-06-22T02:23:00.4404967Z             },
2026-06-22T02:23:00.4405053Z             {
2026-06-22T02:23:00.4405159Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4405244Z               "line": 429
2026-06-22T02:23:00.4405315Z             },
2026-06-22T02:23:00.4405396Z             {
2026-06-22T02:23:00.4405516Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4405591Z               "line": 1082
2026-06-22T02:23:00.4405668Z             },
2026-06-22T02:23:00.4405745Z             {
2026-06-22T02:23:00.4405846Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4405935Z               "line": 8703
2026-06-22T02:23:00.4406015Z             }
2026-06-22T02:23:00.4406101Z           ]
2026-06-22T02:23:00.4406186Z         }
2026-06-22T02:23:00.4406271Z       }
2026-06-22T02:23:00.4406351Z     },
2026-06-22T02:23:00.4406442Z     {
2026-06-22T02:23:00.4406538Z       "id": "REQ-MANIFEST-4",
2026-06-22T02:23:00.4407220Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-22T02:23:00.4407314Z       "requiredStages": [
2026-06-22T02:23:00.4407392Z         "doc",
2026-06-22T02:23:00.4407477Z         "impl",
2026-06-22T02:23:00.4407549Z         "unit"
2026-06-22T02:23:00.4407624Z       ],
2026-06-22T02:23:00.4407711Z       "stages": {
2026-06-22T02:23:00.4407792Z         "doc": {
2026-06-22T02:23:00.4407877Z           "complete": true,
2026-06-22T02:23:00.4407958Z           "evidence": [
2026-06-22T02:23:00.4408036Z             {
2026-06-22T02:23:00.4408130Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4408216Z               "line": 88
2026-06-22T02:23:00.4408297Z             }
2026-06-22T02:23:00.4408365Z           ]
2026-06-22T02:23:00.4408455Z         },
2026-06-22T02:23:00.4408539Z         "impl": {
2026-06-22T02:23:00.4408629Z           "complete": true,
2026-06-22T02:23:00.4408710Z           "evidence": [
2026-06-22T02:23:00.4408790Z             {
2026-06-22T02:23:00.4408908Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4409052Z               "line": 100
2026-06-22T02:23:00.4409133Z             },
2026-06-22T02:23:00.4409208Z             {
2026-06-22T02:23:00.4409324Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4409400Z               "line": 183
2026-06-22T02:23:00.4409490Z             },
2026-06-22T02:23:00.4409571Z             {
2026-06-22T02:23:00.4409672Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4409758Z               "line": 83
2026-06-22T02:23:00.4409833Z             },
2026-06-22T02:23:00.4409925Z             {
2026-06-22T02:23:00.4410044Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4410134Z               "line": 629
2026-06-22T02:23:00.4410215Z             },
2026-06-22T02:23:00.4410292Z             {
2026-06-22T02:23:00.4410396Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4410472Z               "line": 654
2026-06-22T02:23:00.4410554Z             }
2026-06-22T02:23:00.4410631Z           ]
2026-06-22T02:23:00.4410710Z         },
2026-06-22T02:23:00.4410796Z         "int": {
2026-06-22T02:23:00.4410884Z           "complete": false,
2026-06-22T02:23:00.4410970Z           "evidence": []
2026-06-22T02:23:00.4411044Z         },
2026-06-22T02:23:00.4411126Z         "unit": {
2026-06-22T02:23:00.4411204Z           "complete": true,
2026-06-22T02:23:00.4411294Z           "evidence": [
2026-06-22T02:23:00.4411377Z             {
2026-06-22T02:23:00.4411486Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4411683Z               "line": 1445
2026-06-22T02:23:00.4411763Z             },
2026-06-22T02:23:00.4411845Z             {
2026-06-22T02:23:00.4412054Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4412130Z               "line": 1478
2026-06-22T02:23:00.4412213Z             },
2026-06-22T02:23:00.4412293Z             {
2026-06-22T02:23:00.4412402Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4412489Z               "line": 988
2026-06-22T02:23:00.4412575Z             }
2026-06-22T02:23:00.4412656Z           ]
2026-06-22T02:23:00.4412736Z         }
2026-06-22T02:23:00.4412818Z       }
2026-06-22T02:23:00.4412890Z     },
2026-06-22T02:23:00.4412970Z     {
2026-06-22T02:23:00.4413056Z       "id": "REQ-MANIFEST-5",
2026-06-22T02:23:00.4415861Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-22T02:23:00.4415971Z       "requiredStages": [
2026-06-22T02:23:00.4416058Z         "doc",
2026-06-22T02:23:00.4416147Z         "impl",
2026-06-22T02:23:00.4416228Z         "unit"
2026-06-22T02:23:00.4416306Z       ],
2026-06-22T02:23:00.4416396Z       "stages": {
2026-06-22T02:23:00.4416476Z         "doc": {
2026-06-22T02:23:00.4416565Z           "complete": true,
2026-06-22T02:23:00.4416661Z           "evidence": [
2026-06-22T02:23:00.4416751Z             {
2026-06-22T02:23:00.4416835Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4416916Z               "line": 83
2026-06-22T02:23:00.4416998Z             }
2026-06-22T02:23:00.4417079Z           ]
2026-06-22T02:23:00.4417160Z         },
2026-06-22T02:23:00.4417240Z         "impl": {
2026-06-22T02:23:00.4417327Z           "complete": true,
2026-06-22T02:23:00.4417413Z           "evidence": [
2026-06-22T02:23:00.4417493Z             {
2026-06-22T02:23:00.4417623Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4417703Z               "line": 120
2026-06-22T02:23:00.4417780Z             }
2026-06-22T02:23:00.4417860Z           ]
2026-06-22T02:23:00.4417942Z         },
2026-06-22T02:23:00.4418028Z         "int": {
2026-06-22T02:23:00.4418123Z           "complete": false,
2026-06-22T02:23:00.4418213Z           "evidence": []
2026-06-22T02:23:00.4418290Z         },
2026-06-22T02:23:00.4418375Z         "unit": {
2026-06-22T02:23:00.4418466Z           "complete": true,
2026-06-22T02:23:00.4418543Z           "evidence": [
2026-06-22T02:23:00.4418624Z             {
2026-06-22T02:23:00.4418737Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:23:00.4418818Z               "line": 404
2026-06-22T02:23:00.4418896Z             },
2026-06-22T02:23:00.4419062Z             {
2026-06-22T02:23:00.4419184Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4419270Z               "line": 1155
2026-06-22T02:23:00.4419355Z             },
2026-06-22T02:23:00.4419439Z             {
2026-06-22T02:23:00.4419564Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4419641Z               "line": 1184
2026-06-22T02:23:00.4419722Z             },
2026-06-22T02:23:00.4419807Z             {
2026-06-22T02:23:00.4420022Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4420107Z               "line": 1224
2026-06-22T02:23:00.4420280Z             },
2026-06-22T02:23:00.4420370Z             {
2026-06-22T02:23:00.4420475Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4420566Z               "line": 1239
2026-06-22T02:23:00.4420651Z             }
2026-06-22T02:23:00.4420727Z           ]
2026-06-22T02:23:00.4420814Z         }
2026-06-22T02:23:00.4420890Z       }
2026-06-22T02:23:00.4420976Z     },
2026-06-22T02:23:00.4421051Z     {
2026-06-22T02:23:00.4421144Z       "id": "REQ-MANIFEST-6",
2026-06-22T02:23:00.4423191Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-22T02:23:00.4423306Z       "requiredStages": [
2026-06-22T02:23:00.4423378Z         "doc",
2026-06-22T02:23:00.4423459Z         "unit"
2026-06-22T02:23:00.4423540Z       ],
2026-06-22T02:23:00.4423621Z       "stages": {
2026-06-22T02:23:00.4423698Z         "doc": {
2026-06-22T02:23:00.4423793Z           "complete": true,
2026-06-22T02:23:00.4423868Z           "evidence": [
2026-06-22T02:23:00.4423950Z             {
2026-06-22T02:23:00.4424042Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4424126Z               "line": 141
2026-06-22T02:23:00.4424206Z             }
2026-06-22T02:23:00.4424287Z           ]
2026-06-22T02:23:00.4424378Z         },
2026-06-22T02:23:00.4424462Z         "impl": {
2026-06-22T02:23:00.4424552Z           "complete": false,
2026-06-22T02:23:00.4424643Z           "evidence": []
2026-06-22T02:23:00.4424719Z         },
2026-06-22T02:23:00.4424800Z         "int": {
2026-06-22T02:23:00.4424881Z           "complete": false,
2026-06-22T02:23:00.4424962Z           "evidence": []
2026-06-22T02:23:00.4425044Z         },
2026-06-22T02:23:00.4425125Z         "unit": {
2026-06-22T02:23:00.4425210Z           "complete": true,
2026-06-22T02:23:00.4425296Z           "evidence": [
2026-06-22T02:23:00.4425377Z             {
2026-06-22T02:23:00.4425481Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.4425567Z               "line": 1261
2026-06-22T02:23:00.4425645Z             }
2026-06-22T02:23:00.4425725Z           ]
2026-06-22T02:23:00.4425806Z         }
2026-06-22T02:23:00.4425882Z       }
2026-06-22T02:23:00.4425964Z     },
2026-06-22T02:23:00.4426039Z     {
2026-06-22T02:23:00.4426130Z       "id": "REQ-MANIFEST-7",
2026-06-22T02:23:00.4429147Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-22T02:23:00.4429379Z       "requiredStages": [
2026-06-22T02:23:00.4429461Z         "doc",
2026-06-22T02:23:00.4429645Z         "impl",
2026-06-22T02:23:00.4429726Z         "unit"
2026-06-22T02:23:00.4429807Z       ],
2026-06-22T02:23:00.4429892Z       "stages": {
2026-06-22T02:23:00.4429972Z         "doc": {
2026-06-22T02:23:00.4430062Z           "complete": true,
2026-06-22T02:23:00.4430143Z           "evidence": [
2026-06-22T02:23:00.4430225Z             {
2026-06-22T02:23:00.4430324Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.4430410Z               "line": 35
2026-06-22T02:23:00.4430492Z             }
2026-06-22T02:23:00.4430568Z           ]
2026-06-22T02:23:00.4430648Z         },
2026-06-22T02:23:00.4430730Z         "impl": {
2026-06-22T02:23:00.4430821Z           "complete": true,
2026-06-22T02:23:00.4430902Z           "evidence": [
2026-06-22T02:23:00.4430982Z             {
2026-06-22T02:23:00.4431097Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4431192Z               "line": 54
2026-06-22T02:23:00.4431273Z             }
2026-06-22T02:23:00.4431350Z           ]
2026-06-22T02:23:00.4431432Z         },
2026-06-22T02:23:00.4431512Z         "int": {
2026-06-22T02:23:00.4431602Z           "complete": false,
2026-06-22T02:23:00.4431689Z           "evidence": []
2026-06-22T02:23:00.4431770Z         },
2026-06-22T02:23:00.4431855Z         "unit": {
2026-06-22T02:23:00.4431941Z           "complete": true,
2026-06-22T02:23:00.4432028Z           "evidence": [
2026-06-22T02:23:00.4432104Z             {
2026-06-22T02:23:00.4432227Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4432314Z               "line": 1638
2026-06-22T02:23:00.4432390Z             }
2026-06-22T02:23:00.4432475Z           ]
2026-06-22T02:23:00.4432550Z         }
2026-06-22T02:23:00.4432636Z       }
2026-06-22T02:23:00.4432713Z     },
2026-06-22T02:23:00.4432794Z     {
2026-06-22T02:23:00.4432888Z       "id": "REQ-MANIFEST-8",
2026-06-22T02:23:00.4434990Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-22T02:23:00.4435093Z       "requiredStages": [
2026-06-22T02:23:00.4435178Z         "doc",
2026-06-22T02:23:00.4435255Z         "impl",
2026-06-22T02:23:00.4435342Z         "unit",
2026-06-22T02:23:00.4435422Z         "int"
2026-06-22T02:23:00.4435493Z       ],
2026-06-22T02:23:00.4435575Z       "stages": {
2026-06-22T02:23:00.4435661Z         "doc": {
2026-06-22T02:23:00.4435755Z           "complete": true,
2026-06-22T02:23:00.4435847Z           "evidence": [
2026-06-22T02:23:00.4435933Z             {
2026-06-22T02:23:00.4436028Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4436113Z               "line": 184
2026-06-22T02:23:00.4436200Z             },
2026-06-22T02:23:00.4436276Z             {
2026-06-22T02:23:00.4436380Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.4436461Z               "line": 46
2026-06-22T02:23:00.4436544Z             }
2026-06-22T02:23:00.4436628Z           ]
2026-06-22T02:23:00.4436704Z         },
2026-06-22T02:23:00.4436791Z         "impl": {
2026-06-22T02:23:00.4436873Z           "complete": true,
2026-06-22T02:23:00.4436962Z           "evidence": [
2026-06-22T02:23:00.4437043Z             {
2026-06-22T02:23:00.4437164Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4437244Z               "line": 222
2026-06-22T02:23:00.4437421Z             },
2026-06-22T02:23:00.4437498Z             {
2026-06-22T02:23:00.4437600Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.4437762Z               "line": 306
2026-06-22T02:23:00.4437829Z             }
2026-06-22T02:23:00.4437908Z           ]
2026-06-22T02:23:00.4437993Z         },
2026-06-22T02:23:00.4438070Z         "int": {
2026-06-22T02:23:00.4438151Z           "complete": true,
2026-06-22T02:23:00.4438232Z           "evidence": [
2026-06-22T02:23:00.4438318Z             {
2026-06-22T02:23:00.4438433Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:23:00.4438514Z               "line": 18
2026-06-22T02:23:00.4438594Z             }
2026-06-22T02:23:00.4438670Z           ]
2026-06-22T02:23:00.4438753Z         },
2026-06-22T02:23:00.4438828Z         "unit": {
2026-06-22T02:23:00.4438923Z           "complete": true,
2026-06-22T02:23:00.4439096Z           "evidence": [
2026-06-22T02:23:00.4439171Z             {
2026-06-22T02:23:00.4439300Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4439392Z               "line": 1656
2026-06-22T02:23:00.4439472Z             },
2026-06-22T02:23:00.4439553Z             {
2026-06-22T02:23:00.4439673Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4439749Z               "line": 316
2026-06-22T02:23:00.4439829Z             },
2026-06-22T02:23:00.4439901Z             {
2026-06-22T02:23:00.4440016Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4440102Z               "line": 332
2026-06-22T02:23:00.4440172Z             },
2026-06-22T02:23:00.4440243Z             {
2026-06-22T02:23:00.4440353Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.4440438Z               "line": 345
2026-06-22T02:23:00.4440522Z             },
2026-06-22T02:23:00.4440588Z             {
2026-06-22T02:23:00.4440699Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.4440781Z               "line": 422
2026-06-22T02:23:00.4440875Z             },
2026-06-22T02:23:00.4440956Z             {
2026-06-22T02:23:00.4441067Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:23:00.4441147Z               "line": 436
2026-06-22T02:23:00.4441218Z             }
2026-06-22T02:23:00.4441295Z           ]
2026-06-22T02:23:00.4441376Z         }
2026-06-22T02:23:00.4441462Z       }
2026-06-22T02:23:00.4441542Z     },
2026-06-22T02:23:00.4441625Z     {
2026-06-22T02:23:00.4441715Z       "id": "REQ-MESH-1",
2026-06-22T02:23:00.4443754Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-22T02:23:00.4443865Z       "requiredStages": [
2026-06-22T02:23:00.4443960Z         "impl",
2026-06-22T02:23:00.4444036Z         "unit",
2026-06-22T02:23:00.4444116Z         "int"
2026-06-22T02:23:00.4444198Z       ],
2026-06-22T02:23:00.4444284Z       "stages": {
2026-06-22T02:23:00.4444360Z         "doc": {
2026-06-22T02:23:00.4444450Z           "complete": false,
2026-06-22T02:23:00.4444542Z           "evidence": []
2026-06-22T02:23:00.4444622Z         },
2026-06-22T02:23:00.4444703Z         "impl": {
2026-06-22T02:23:00.4444784Z           "complete": true,
2026-06-22T02:23:00.4444876Z           "evidence": [
2026-06-22T02:23:00.4444956Z             {
2026-06-22T02:23:00.4445075Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.4445289Z               "line": 922
2026-06-22T02:23:00.4445365Z             },
2026-06-22T02:23:00.4445451Z             {
2026-06-22T02:23:00.4445672Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4445753Z               "line": 38
2026-06-22T02:23:00.4445835Z             },
2026-06-22T02:23:00.4445921Z             {
2026-06-22T02:23:00.4446039Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4446125Z               "line": 161
2026-06-22T02:23:00.4446197Z             },
2026-06-22T02:23:00.4446273Z             {
2026-06-22T02:23:00.4446392Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4446479Z               "line": 206
2026-06-22T02:23:00.4446565Z             },
2026-06-22T02:23:00.4446644Z             {
2026-06-22T02:23:00.4446760Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4446855Z               "line": 57
2026-06-22T02:23:00.4446926Z             },
2026-06-22T02:23:00.4447017Z             {
2026-06-22T02:23:00.4447142Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4447223Z               "line": 24
2026-06-22T02:23:00.4447303Z             },
2026-06-22T02:23:00.4447380Z             {
2026-06-22T02:23:00.4447498Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4447579Z               "line": 142
2026-06-22T02:23:00.4447661Z             },
2026-06-22T02:23:00.4447743Z             {
2026-06-22T02:23:00.4447865Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4447947Z               "line": 162
2026-06-22T02:23:00.4448029Z             }
2026-06-22T02:23:00.4448105Z           ]
2026-06-22T02:23:00.4448184Z         },
2026-06-22T02:23:00.4448270Z         "int": {
2026-06-22T02:23:00.4448360Z           "complete": true,
2026-06-22T02:23:00.4448441Z           "evidence": [
2026-06-22T02:23:00.4448520Z             {
2026-06-22T02:23:00.4448645Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:23:00.4448740Z               "line": 67
2026-06-22T02:23:00.4448821Z             },
2026-06-22T02:23:00.4448906Z             {
2026-06-22T02:23:00.4449083Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:23:00.4449173Z               "line": 93
2026-06-22T02:23:00.4449254Z             },
2026-06-22T02:23:00.4449332Z             {
2026-06-22T02:23:00.4449469Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:23:00.4449550Z               "line": 117
2026-06-22T02:23:00.4449632Z             },
2026-06-22T02:23:00.4449717Z             {
2026-06-22T02:23:00.4449836Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:23:00.4449918Z               "line": 134
2026-06-22T02:23:00.4450004Z             }
2026-06-22T02:23:00.4450079Z           ]
2026-06-22T02:23:00.4450160Z         },
2026-06-22T02:23:00.4450243Z         "unit": {
2026-06-22T02:23:00.4450333Z           "complete": true,
2026-06-22T02:23:00.4450422Z           "evidence": [
2026-06-22T02:23:00.4450499Z             {
2026-06-22T02:23:00.4450610Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4450704Z               "line": 427
2026-06-22T02:23:00.4450785Z             },
2026-06-22T02:23:00.4450865Z             {
2026-06-22T02:23:00.4450988Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4451068Z               "line": 376
2026-06-22T02:23:00.4451153Z             },
2026-06-22T02:23:00.4451220Z             {
2026-06-22T02:23:00.4451350Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4451440Z               "line": 412
2026-06-22T02:23:00.4451521Z             },
2026-06-22T02:23:00.4451603Z             {
2026-06-22T02:23:00.4451716Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4451807Z               "line": 427
2026-06-22T02:23:00.4451889Z             },
2026-06-22T02:23:00.4451974Z             {
2026-06-22T02:23:00.4452204Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4452379Z               "line": 438
2026-06-22T02:23:00.4452460Z             },
2026-06-22T02:23:00.4452533Z             {
2026-06-22T02:23:00.4452651Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4452737Z               "line": 449
2026-06-22T02:23:00.4452824Z             },
2026-06-22T02:23:00.4452904Z             {
2026-06-22T02:23:00.4453018Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4453100Z               "line": 460
2026-06-22T02:23:00.4453177Z             },
2026-06-22T02:23:00.4453266Z             {
2026-06-22T02:23:00.4453385Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4453473Z               "line": 496
2026-06-22T02:23:00.4453553Z             },
2026-06-22T02:23:00.4453623Z             {
2026-06-22T02:23:00.4453747Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4453843Z               "line": 519
2026-06-22T02:23:00.4453928Z             },
2026-06-22T02:23:00.4454013Z             {
2026-06-22T02:23:00.4454133Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4454224Z               "line": 546
2026-06-22T02:23:00.4454300Z             }
2026-06-22T02:23:00.4454376Z           ]
2026-06-22T02:23:00.4454444Z         }
2026-06-22T02:23:00.4454529Z       }
2026-06-22T02:23:00.4454610Z     },
2026-06-22T02:23:00.4454691Z     {
2026-06-22T02:23:00.4454777Z       "id": "REQ-MESH-2",
2026-06-22T02:23:00.4457277Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-22T02:23:00.4457392Z       "requiredStages": [
2026-06-22T02:23:00.4457482Z         "impl",
2026-06-22T02:23:00.4457553Z         "unit",
2026-06-22T02:23:00.4457635Z         "int"
2026-06-22T02:23:00.4457716Z       ],
2026-06-22T02:23:00.4457801Z       "stages": {
2026-06-22T02:23:00.4457887Z         "doc": {
2026-06-22T02:23:00.4457969Z           "complete": false,
2026-06-22T02:23:00.4458054Z           "evidence": []
2026-06-22T02:23:00.4458131Z         },
2026-06-22T02:23:00.4458212Z         "impl": {
2026-06-22T02:23:00.4458308Z           "complete": true,
2026-06-22T02:23:00.4458397Z           "evidence": [
2026-06-22T02:23:00.4458488Z             {
2026-06-22T02:23:00.4458603Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.4458689Z               "line": 757
2026-06-22T02:23:00.4458763Z             },
2026-06-22T02:23:00.4458849Z             {
2026-06-22T02:23:00.4459015Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4459099Z               "line": 118
2026-06-22T02:23:00.4459180Z             },
2026-06-22T02:23:00.4459257Z             {
2026-06-22T02:23:00.4459377Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4459462Z               "line": 347
2026-06-22T02:23:00.4459539Z             },
2026-06-22T02:23:00.4459620Z             {
2026-06-22T02:23:00.4459733Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4459819Z               "line": 389
2026-06-22T02:23:00.4459897Z             },
2026-06-22T02:23:00.4460086Z             {
2026-06-22T02:23:00.4460197Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4460377Z               "line": 403
2026-06-22T02:23:00.4460453Z             },
2026-06-22T02:23:00.4460541Z             {
2026-06-22T02:23:00.4460649Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4460725Z               "line": 492
2026-06-22T02:23:00.4460808Z             },
2026-06-22T02:23:00.4460875Z             {
2026-06-22T02:23:00.4460992Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4461074Z               "line": 507
2026-06-22T02:23:00.4461151Z             },
2026-06-22T02:23:00.4461236Z             {
2026-06-22T02:23:00.4461349Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4461435Z               "line": 534
2026-06-22T02:23:00.4461502Z             },
2026-06-22T02:23:00.4461586Z             {
2026-06-22T02:23:00.4461713Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4461805Z               "line": 207
2026-06-22T02:23:00.4461882Z             },
2026-06-22T02:23:00.4461971Z             {
2026-06-22T02:23:00.4462095Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4462177Z               "line": 755
2026-06-22T02:23:00.4462262Z             },
2026-06-22T02:23:00.4462343Z             {
2026-06-22T02:23:00.4462449Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4462530Z               "line": 816
2026-06-22T02:23:00.4462601Z             },
2026-06-22T02:23:00.4462681Z             {
2026-06-22T02:23:00.4462797Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4462887Z               "line": 869
2026-06-22T02:23:00.4462978Z             },
2026-06-22T02:23:00.4463054Z             {
2026-06-22T02:23:00.4463173Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4463254Z               "line": 891
2026-06-22T02:23:00.4463340Z             },
2026-06-22T02:23:00.4463418Z             {
2026-06-22T02:23:00.4463530Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4463612Z               "line": 122
2026-06-22T02:23:00.4463689Z             },
2026-06-22T02:23:00.4463774Z             {
2026-06-22T02:23:00.4463888Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4463975Z               "line": 44
2026-06-22T02:23:00.4464052Z             },
2026-06-22T02:23:00.4464131Z             {
2026-06-22T02:23:00.4464235Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4464321Z               "line": 184
2026-06-22T02:23:00.4464403Z             },
2026-06-22T02:23:00.4464474Z             {
2026-06-22T02:23:00.4464587Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4464660Z               "line": 211
2026-06-22T02:23:00.4464737Z             },
2026-06-22T02:23:00.4464827Z             {
2026-06-22T02:23:00.4464931Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4465018Z               "line": 251
2026-06-22T02:23:00.4465099Z             },
2026-06-22T02:23:00.4465189Z             {
2026-06-22T02:23:00.4465294Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4465385Z               "line": 275
2026-06-22T02:23:00.4465471Z             },
2026-06-22T02:23:00.4465551Z             {
2026-06-22T02:23:00.4465653Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4465737Z               "line": 289
2026-06-22T02:23:00.4465809Z             },
2026-06-22T02:23:00.4465895Z             {
2026-06-22T02:23:00.4465996Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4466080Z               "line": 300
2026-06-22T02:23:00.4466152Z             },
2026-06-22T02:23:00.4466239Z             {
2026-06-22T02:23:00.4466348Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4466433Z               "line": 313
2026-06-22T02:23:00.4466600Z             }
2026-06-22T02:23:00.4466680Z           ]
2026-06-22T02:23:00.4466764Z         },
2026-06-22T02:23:00.4466907Z         "int": {
2026-06-22T02:23:00.4467003Z           "complete": true,
2026-06-22T02:23:00.4467084Z           "evidence": [
2026-06-22T02:23:00.4467164Z             {
2026-06-22T02:23:00.4467289Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T02:23:00.4467374Z               "line": 116
2026-06-22T02:23:00.4467459Z             },
2026-06-22T02:23:00.4467537Z             {
2026-06-22T02:23:00.4467656Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T02:23:00.4467727Z               "line": 181
2026-06-22T02:23:00.4467808Z             }
2026-06-22T02:23:00.4467885Z           ]
2026-06-22T02:23:00.4467971Z         },
2026-06-22T02:23:00.4468056Z         "unit": {
2026-06-22T02:23:00.4468147Z           "complete": true,
2026-06-22T02:23:00.4468238Z           "evidence": [
2026-06-22T02:23:00.4468304Z             {
2026-06-22T02:23:00.4468432Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4468529Z               "line": 999
2026-06-22T02:23:00.4468614Z             },
2026-06-22T02:23:00.4468691Z             {
2026-06-22T02:23:00.4468801Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4468896Z               "line": 1016
2026-06-22T02:23:00.4469043Z             },
2026-06-22T02:23:00.4469135Z             {
2026-06-22T02:23:00.4469253Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4469333Z               "line": 1024
2026-06-22T02:23:00.4469438Z             },
2026-06-22T02:23:00.4469528Z             {
2026-06-22T02:23:00.4469645Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4469717Z               "line": 1048
2026-06-22T02:23:00.4469798Z             },
2026-06-22T02:23:00.4472389Z             {
2026-06-22T02:23:00.4472550Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4472656Z               "line": 1499
2026-06-22T02:23:00.4472737Z             },
2026-06-22T02:23:00.4472823Z             {
2026-06-22T02:23:00.4472941Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4473029Z               "line": 347
2026-06-22T02:23:00.4473119Z             },
2026-06-22T02:23:00.4473203Z             {
2026-06-22T02:23:00.4473314Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4473399Z               "line": 370
2026-06-22T02:23:00.4473480Z             },
2026-06-22T02:23:00.4473557Z             {
2026-06-22T02:23:00.4473673Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4473757Z               "line": 407
2026-06-22T02:23:00.4473838Z             },
2026-06-22T02:23:00.4473920Z             {
2026-06-22T02:23:00.4474025Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4474110Z               "line": 431
2026-06-22T02:23:00.4474182Z             },
2026-06-22T02:23:00.4474263Z             {
2026-06-22T02:23:00.4474381Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4474458Z               "line": 483
2026-06-22T02:23:00.4474550Z             },
2026-06-22T02:23:00.4474626Z             {
2026-06-22T02:23:00.4474733Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4474824Z               "line": 499
2026-06-22T02:23:00.4474900Z             },
2026-06-22T02:23:00.4474977Z             {
2026-06-22T02:23:00.4475077Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4475157Z               "line": 514
2026-06-22T02:23:00.4475230Z             },
2026-06-22T02:23:00.4475311Z             {
2026-06-22T02:23:00.4475420Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4475506Z               "line": 531
2026-06-22T02:23:00.4475588Z             }
2026-06-22T02:23:00.4475664Z           ]
2026-06-22T02:23:00.4475744Z         }
2026-06-22T02:23:00.4475821Z       }
2026-06-22T02:23:00.4475903Z     },
2026-06-22T02:23:00.4476116Z     {
2026-06-22T02:23:00.4476203Z       "id": "REQ-MESH-3",
2026-06-22T02:23:00.4477873Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-22T02:23:00.4478053Z       "requiredStages": [
2026-06-22T02:23:00.4478135Z         "impl",
2026-06-22T02:23:00.4478216Z         "unit",
2026-06-22T02:23:00.4478297Z         "int"
2026-06-22T02:23:00.4478373Z       ],
2026-06-22T02:23:00.4478459Z       "stages": {
2026-06-22T02:23:00.4478541Z         "doc": {
2026-06-22T02:23:00.4478640Z           "complete": false,
2026-06-22T02:23:00.4478721Z           "evidence": []
2026-06-22T02:23:00.4478803Z         },
2026-06-22T02:23:00.4478888Z         "impl": {
2026-06-22T02:23:00.4479071Z           "complete": true,
2026-06-22T02:23:00.4479155Z           "evidence": [
2026-06-22T02:23:00.4479226Z             {
2026-06-22T02:23:00.4479342Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.4479423Z               "line": 641
2026-06-22T02:23:00.4479508Z             }
2026-06-22T02:23:00.4479585Z           ]
2026-06-22T02:23:00.4479661Z         },
2026-06-22T02:23:00.4479743Z         "int": {
2026-06-22T02:23:00.4479832Z           "complete": true,
2026-06-22T02:23:00.4479931Z           "evidence": [
2026-06-22T02:23:00.4480007Z             {
2026-06-22T02:23:00.4480130Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T02:23:00.4480206Z               "line": 373
2026-06-22T02:23:00.4480291Z             },
2026-06-22T02:23:00.4480372Z             {
2026-06-22T02:23:00.4480492Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T02:23:00.4480577Z               "line": 436
2026-06-22T02:23:00.4480669Z             }
2026-06-22T02:23:00.4480750Z           ]
2026-06-22T02:23:00.4480826Z         },
2026-06-22T02:23:00.4480906Z         "unit": {
2026-06-22T02:23:00.4480993Z           "complete": true,
2026-06-22T02:23:00.4481083Z           "evidence": [
2026-06-22T02:23:00.4481164Z             {
2026-06-22T02:23:00.4481278Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.4481360Z               "line": 910
2026-06-22T02:23:00.4481431Z             }
2026-06-22T02:23:00.4481512Z           ]
2026-06-22T02:23:00.4481593Z         }
2026-06-22T02:23:00.4481675Z       }
2026-06-22T02:23:00.4481755Z     },
2026-06-22T02:23:00.4481841Z     {
2026-06-22T02:23:00.4481928Z       "id": "REQ-MESH-4",
2026-06-22T02:23:00.4484073Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-22T02:23:00.4484184Z       "requiredStages": [
2026-06-22T02:23:00.4484265Z         "impl",
2026-06-22T02:23:00.4484346Z         "unit",
2026-06-22T02:23:00.4484427Z         "int"
2026-06-22T02:23:00.4484504Z       ],
2026-06-22T02:23:00.4484594Z       "stages": {
2026-06-22T02:23:00.4484670Z         "doc": {
2026-06-22T02:23:00.4484766Z           "complete": false,
2026-06-22T02:23:00.4484965Z           "evidence": []
2026-06-22T02:23:00.4485042Z         },
2026-06-22T02:23:00.4485224Z         "impl": {
2026-06-22T02:23:00.4485317Z           "complete": true,
2026-06-22T02:23:00.4485402Z           "evidence": [
2026-06-22T02:23:00.4485485Z             {
2026-06-22T02:23:00.4485618Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:23:00.4485704Z               "line": 33
2026-06-22T02:23:00.4485785Z             },
2026-06-22T02:23:00.4485866Z             {
2026-06-22T02:23:00.4485989Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4486071Z               "line": 68
2026-06-22T02:23:00.4486153Z             },
2026-06-22T02:23:00.4486234Z             {
2026-06-22T02:23:00.4486352Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4486439Z               "line": 111
2026-06-22T02:23:00.4486519Z             },
2026-06-22T02:23:00.4486595Z             {
2026-06-22T02:23:00.4486720Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4486806Z               "line": 462
2026-06-22T02:23:00.4486896Z             },
2026-06-22T02:23:00.4486967Z             {
2026-06-22T02:23:00.4487078Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4487158Z               "line": 711
2026-06-22T02:23:00.4487234Z             },
2026-06-22T02:23:00.4487315Z             {
2026-06-22T02:23:00.4487436Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4487520Z               "line": 725
2026-06-22T02:23:00.4487600Z             },
2026-06-22T02:23:00.4487667Z             {
2026-06-22T02:23:00.4487781Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4487865Z               "line": 132
2026-06-22T02:23:00.4487945Z             },
2026-06-22T02:23:00.4488032Z             {
2026-06-22T02:23:00.4488138Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:23:00.4488218Z               "line": 26
2026-06-22T02:23:00.4488304Z             },
2026-06-22T02:23:00.4488381Z             {
2026-06-22T02:23:00.4488499Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:23:00.4488580Z               "line": 97
2026-06-22T02:23:00.4488662Z             },
2026-06-22T02:23:00.4488743Z             {
2026-06-22T02:23:00.4488861Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:23:00.4489006Z               "line": 119
2026-06-22T02:23:00.4489086Z             },
2026-06-22T02:23:00.4489162Z             {
2026-06-22T02:23:00.4489267Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4489344Z               "line": 82
2026-06-22T02:23:00.4489429Z             },
2026-06-22T02:23:00.4489520Z             {
2026-06-22T02:23:00.4489626Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4489701Z               "line": 111
2026-06-22T02:23:00.4489786Z             },
2026-06-22T02:23:00.4489868Z             {
2026-06-22T02:23:00.4489983Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4490063Z               "line": 232
2026-06-22T02:23:00.4490149Z             },
2026-06-22T02:23:00.4490231Z             {
2026-06-22T02:23:00.4490331Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4490411Z               "line": 245
2026-06-22T02:23:00.4490486Z             },
2026-06-22T02:23:00.4490577Z             {
2026-06-22T02:23:00.4490676Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4490766Z               "line": 4665
2026-06-22T02:23:00.4490846Z             }
2026-06-22T02:23:00.4490928Z           ]
2026-06-22T02:23:00.4491009Z         },
2026-06-22T02:23:00.4491090Z         "int": {
2026-06-22T02:23:00.4491171Z           "complete": true,
2026-06-22T02:23:00.4491248Z           "evidence": [
2026-06-22T02:23:00.4491333Z             {
2026-06-22T02:23:00.4491447Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T02:23:00.4491529Z               "line": 98
2026-06-22T02:23:00.4491719Z             },
2026-06-22T02:23:00.4491795Z             {
2026-06-22T02:23:00.4492025Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T02:23:00.4492100Z               "line": 140
2026-06-22T02:23:00.4492183Z             }
2026-06-22T02:23:00.4492264Z           ]
2026-06-22T02:23:00.4492348Z         },
2026-06-22T02:23:00.4492430Z         "unit": {
2026-06-22T02:23:00.4492503Z           "complete": true,
2026-06-22T02:23:00.4492579Z           "evidence": [
2026-06-22T02:23:00.4492663Z             {
2026-06-22T02:23:00.4492788Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:23:00.4492865Z               "line": 178
2026-06-22T02:23:00.4492950Z             },
2026-06-22T02:23:00.4493029Z             {
2026-06-22T02:23:00.4493149Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:23:00.4493234Z               "line": 242
2026-06-22T02:23:00.4493314Z             },
2026-06-22T02:23:00.4493394Z             {
2026-06-22T02:23:00.4493499Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4493600Z               "line": 1079
2026-06-22T02:23:00.4493675Z             },
2026-06-22T02:23:00.4493756Z             {
2026-06-22T02:23:00.4493862Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4493948Z               "line": 1109
2026-06-22T02:23:00.4494023Z             },
2026-06-22T02:23:00.4494101Z             {
2026-06-22T02:23:00.4494214Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:23:00.4494300Z               "line": 1129
2026-06-22T02:23:00.4494377Z             },
2026-06-22T02:23:00.4494458Z             {
2026-06-22T02:23:00.4494587Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:23:00.4494662Z               "line": 602
2026-06-22T02:23:00.4494740Z             },
2026-06-22T02:23:00.4494811Z             {
2026-06-22T02:23:00.4494921Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:23:00.4495006Z               "line": 148
2026-06-22T02:23:00.4495088Z             },
2026-06-22T02:23:00.4495178Z             {
2026-06-22T02:23:00.4495287Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:23:00.4495379Z               "line": 169
2026-06-22T02:23:00.4495460Z             },
2026-06-22T02:23:00.4495534Z             {
2026-06-22T02:23:00.4495646Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:23:00.4495732Z               "line": 181
2026-06-22T02:23:00.4495808Z             },
2026-06-22T02:23:00.4495892Z             {
2026-06-22T02:23:00.4496006Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:23:00.4496093Z               "line": 202
2026-06-22T02:23:00.4496174Z             },
2026-06-22T02:23:00.4496259Z             {
2026-06-22T02:23:00.4496369Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4496455Z               "line": 375
2026-06-22T02:23:00.4496535Z             },
2026-06-22T02:23:00.4496626Z             {
2026-06-22T02:23:00.4496736Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4496827Z               "line": 407
2026-06-22T02:23:00.4496898Z             },
2026-06-22T02:23:00.4496984Z             {
2026-06-22T02:23:00.4497084Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4497165Z               "line": 10052
2026-06-22T02:23:00.4497251Z             }
2026-06-22T02:23:00.4497314Z           ]
2026-06-22T02:23:00.4497399Z         }
2026-06-22T02:23:00.4497480Z       }
2026-06-22T02:23:00.4497566Z     },
2026-06-22T02:23:00.4497643Z     {
2026-06-22T02:23:00.4497728Z       "id": "REQ-MESH-5",
2026-06-22T02:23:00.4499178Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-22T02:23:00.4499498Z       "requiredStages": [
2026-06-22T02:23:00.4499580Z         "impl",
2026-06-22T02:23:00.4499651Z         "unit"
2026-06-22T02:23:00.4499732Z       ],
2026-06-22T02:23:00.4499817Z       "stages": {
2026-06-22T02:23:00.4499900Z         "doc": {
2026-06-22T02:23:00.4499994Z           "complete": false,
2026-06-22T02:23:00.4500075Z           "evidence": []
2026-06-22T02:23:00.4500157Z         },
2026-06-22T02:23:00.4500238Z         "impl": {
2026-06-22T02:23:00.4500332Z           "complete": true,
2026-06-22T02:23:00.4500418Z           "evidence": [
2026-06-22T02:23:00.4500496Z             {
2026-06-22T02:23:00.4500614Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4500690Z               "line": 61
2026-06-22T02:23:00.4500772Z             },
2026-06-22T02:23:00.4500863Z             {
2026-06-22T02:23:00.4500985Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4501080Z               "line": 109
2026-06-22T02:23:00.4501147Z             },
2026-06-22T02:23:00.4501232Z             {
2026-06-22T02:23:00.4501345Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4501431Z               "line": 104
2026-06-22T02:23:00.4501507Z             },
2026-06-22T02:23:00.4501589Z             {
2026-06-22T02:23:00.4501706Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.4501789Z               "line": 105
2026-06-22T02:23:00.4501875Z             },
2026-06-22T02:23:00.4501955Z             {
2026-06-22T02:23:00.4502075Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4502161Z               "line": 85
2026-06-22T02:23:00.4502237Z             },
2026-06-22T02:23:00.4502313Z             {
2026-06-22T02:23:00.4502428Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4502518Z               "line": 250
2026-06-22T02:23:00.4502594Z             },
2026-06-22T02:23:00.4502685Z             {
2026-06-22T02:23:00.4502804Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4502885Z               "line": 314
2026-06-22T02:23:00.4502971Z             },
2026-06-22T02:23:00.4503048Z             {
2026-06-22T02:23:00.4503162Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4503242Z               "line": 767
2026-06-22T02:23:00.4503324Z             },
2026-06-22T02:23:00.4503402Z             {
2026-06-22T02:23:00.4503510Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4503599Z               "line": 101
2026-06-22T02:23:00.4503670Z             },
2026-06-22T02:23:00.4503751Z             {
2026-06-22T02:23:00.4503855Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4503935Z               "line": 193
2026-06-22T02:23:00.4504017Z             }
2026-06-22T02:23:00.4504103Z           ]
2026-06-22T02:23:00.4504184Z         },
2026-06-22T02:23:00.4504254Z         "int": {
2026-06-22T02:23:00.4504356Z           "complete": false,
2026-06-22T02:23:00.4504437Z           "evidence": []
2026-06-22T02:23:00.4504522Z         },
2026-06-22T02:23:00.4504608Z         "unit": {
2026-06-22T02:23:00.4504694Z           "complete": true,
2026-06-22T02:23:00.4504775Z           "evidence": [
2026-06-22T02:23:00.4504856Z             {
2026-06-22T02:23:00.4504981Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4505061Z               "line": 1009
2026-06-22T02:23:00.4505147Z             },
2026-06-22T02:23:00.4505227Z             {
2026-06-22T02:23:00.4505333Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:23:00.4505419Z               "line": 462
2026-06-22T02:23:00.4505500Z             }
2026-06-22T02:23:00.4505576Z           ]
2026-06-22T02:23:00.4505658Z         }
2026-06-22T02:23:00.4505748Z       }
2026-06-22T02:23:00.4505915Z     },
2026-06-22T02:23:00.4505997Z     {
2026-06-22T02:23:00.4506086Z       "id": "REQ-MESH-6",
2026-06-22T02:23:00.4507364Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-22T02:23:00.4507458Z       "requiredStages": [
2026-06-22T02:23:00.4507545Z         "impl",
2026-06-22T02:23:00.4507616Z         "unit"
2026-06-22T02:23:00.4507697Z       ],
2026-06-22T02:23:00.4507777Z       "stages": {
2026-06-22T02:23:00.4507860Z         "doc": {
2026-06-22T02:23:00.4507945Z           "complete": false,
2026-06-22T02:23:00.4508036Z           "evidence": []
2026-06-22T02:23:00.4508121Z         },
2026-06-22T02:23:00.4508222Z         "impl": {
2026-06-22T02:23:00.4508316Z           "complete": true,
2026-06-22T02:23:00.4508397Z           "evidence": [
2026-06-22T02:23:00.4508484Z             {
2026-06-22T02:23:00.4508589Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4508678Z               "line": 4181
2026-06-22T02:23:00.4508763Z             }
2026-06-22T02:23:00.4508845Z           ]
2026-06-22T02:23:00.4508925Z         },
2026-06-22T02:23:00.4509109Z         "int": {
2026-06-22T02:23:00.4509201Z           "complete": false,
2026-06-22T02:23:00.4509282Z           "evidence": []
2026-06-22T02:23:00.4509367Z         },
2026-06-22T02:23:00.4509458Z         "unit": {
2026-06-22T02:23:00.4509544Z           "complete": true,
2026-06-22T02:23:00.4509638Z           "evidence": [
2026-06-22T02:23:00.4509715Z             {
2026-06-22T02:23:00.4509821Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4509906Z               "line": 10602
2026-06-22T02:23:00.4509981Z             },
2026-06-22T02:23:00.4510083Z             {
2026-06-22T02:23:00.4510169Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4510264Z               "line": 10629
2026-06-22T02:23:00.4510344Z             },
2026-06-22T02:23:00.4510421Z             {
2026-06-22T02:23:00.4510521Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4510602Z               "line": 10653
2026-06-22T02:23:00.4510683Z             }
2026-06-22T02:23:00.4510765Z           ]
2026-06-22T02:23:00.4510845Z         }
2026-06-22T02:23:00.4510917Z       }
2026-06-22T02:23:00.4511002Z     },
2026-06-22T02:23:00.4511075Z     {
2026-06-22T02:23:00.4511169Z       "id": "REQ-MIGRATE-1",
2026-06-22T02:23:00.4511342Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-22T02:23:00.4511424Z       "requiredStages": [],
2026-06-22T02:23:00.4511512Z       "stages": {
2026-06-22T02:23:00.4511593Z         "doc": {
2026-06-22T02:23:00.4511688Z           "complete": false,
2026-06-22T02:23:00.4511773Z           "evidence": []
2026-06-22T02:23:00.4511852Z         },
2026-06-22T02:23:00.4511933Z         "impl": {
2026-06-22T02:23:00.4512019Z           "complete": false,
2026-06-22T02:23:00.4512111Z           "evidence": []
2026-06-22T02:23:00.4512186Z         },
2026-06-22T02:23:00.4512276Z         "int": {
2026-06-22T02:23:00.4512359Z           "complete": false,
2026-06-22T02:23:00.4512439Z           "evidence": []
2026-06-22T02:23:00.4512515Z         },
2026-06-22T02:23:00.4512596Z         "unit": {
2026-06-22T02:23:00.4512679Z           "complete": false,
2026-06-22T02:23:00.4512764Z           "evidence": []
2026-06-22T02:23:00.4512853Z         }
2026-06-22T02:23:00.4512925Z       }
2026-06-22T02:23:00.4513012Z     },
2026-06-22T02:23:00.4513092Z     {
2026-06-22T02:23:00.4513183Z       "id": "REQ-MSG-1",
2026-06-22T02:23:00.4513613Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-22T02:23:00.4513812Z       "requiredStages": [
2026-06-22T02:23:00.4513899Z         "impl",
2026-06-22T02:23:00.4513981Z         "unit",
2026-06-22T02:23:00.4514159Z         "int"
2026-06-22T02:23:00.4514240Z       ],
2026-06-22T02:23:00.4514326Z       "stages": {
2026-06-22T02:23:00.4514410Z         "doc": {
2026-06-22T02:23:00.4514490Z           "complete": false,
2026-06-22T02:23:00.4514572Z           "evidence": []
2026-06-22T02:23:00.4514654Z         },
2026-06-22T02:23:00.4514739Z         "impl": {
2026-06-22T02:23:00.4514833Z           "complete": true,
2026-06-22T02:23:00.4514911Z           "evidence": [
2026-06-22T02:23:00.4514997Z             {
2026-06-22T02:23:00.4515101Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4515182Z               "line": 28
2026-06-22T02:23:00.4515264Z             },
2026-06-22T02:23:00.4515345Z             {
2026-06-22T02:23:00.4515449Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4515526Z               "line": 94
2026-06-22T02:23:00.4515621Z             },
2026-06-22T02:23:00.4515702Z             {
2026-06-22T02:23:00.4515812Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4515898Z               "line": 127
2026-06-22T02:23:00.4515979Z             },
2026-06-22T02:23:00.4516064Z             {
2026-06-22T02:23:00.4516170Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4516260Z               "line": 149
2026-06-22T02:23:00.4516340Z             },
2026-06-22T02:23:00.4516422Z             {
2026-06-22T02:23:00.4516523Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4516613Z               "line": 174
2026-06-22T02:23:00.4516699Z             },
2026-06-22T02:23:00.4516776Z             {
2026-06-22T02:23:00.4516890Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:23:00.4516974Z               "line": 18
2026-06-22T02:23:00.4517059Z             },
2026-06-22T02:23:00.4517141Z             {
2026-06-22T02:23:00.4517252Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.4517341Z               "line": 13
2026-06-22T02:23:00.4517427Z             },
2026-06-22T02:23:00.4517509Z             {
2026-06-22T02:23:00.4517614Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.4517703Z               "line": 62
2026-06-22T02:23:00.4517786Z             },
2026-06-22T02:23:00.4517866Z             {
2026-06-22T02:23:00.4517971Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4518052Z               "line": 13
2026-06-22T02:23:00.4518133Z             }
2026-06-22T02:23:00.4518214Z           ]
2026-06-22T02:23:00.4518300Z         },
2026-06-22T02:23:00.4518390Z         "int": {
2026-06-22T02:23:00.4518477Z           "complete": true,
2026-06-22T02:23:00.4518566Z           "evidence": [
2026-06-22T02:23:00.4518647Z             {
2026-06-22T02:23:00.4518782Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:23:00.4518867Z               "line": 9
2026-06-22T02:23:00.4519011Z             },
2026-06-22T02:23:00.4519097Z             {
2026-06-22T02:23:00.4519224Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:23:00.4519319Z               "line": 56
2026-06-22T02:23:00.4519400Z             },
2026-06-22T02:23:00.4519481Z             {
2026-06-22T02:23:00.4519603Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:23:00.4519698Z               "line": 113
2026-06-22T02:23:00.4519784Z             }
2026-06-22T02:23:00.4519861Z           ]
2026-06-22T02:23:00.4519946Z         },
2026-06-22T02:23:00.4520027Z         "unit": {
2026-06-22T02:23:00.4520109Z           "complete": true,
2026-06-22T02:23:00.4520194Z           "evidence": [
2026-06-22T02:23:00.4520280Z             {
2026-06-22T02:23:00.4520391Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4520471Z               "line": 203
2026-06-22T02:23:00.4520556Z             },
2026-06-22T02:23:00.4520633Z             {
2026-06-22T02:23:00.4520870Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4520957Z               "line": 232
2026-06-22T02:23:00.4521129Z             },
2026-06-22T02:23:00.4521209Z             {
2026-06-22T02:23:00.4521316Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4521405Z               "line": 277
2026-06-22T02:23:00.4521486Z             },
2026-06-22T02:23:00.4521563Z             {
2026-06-22T02:23:00.4521669Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4521743Z               "line": 300
2026-06-22T02:23:00.4521825Z             },
2026-06-22T02:23:00.4521902Z             {
2026-06-22T02:23:00.4522012Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:23:00.4522096Z               "line": 325
2026-06-22T02:23:00.4522176Z             },
2026-06-22T02:23:00.4522253Z             {
2026-06-22T02:23:00.4522362Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:23:00.4522441Z               "line": 204
2026-06-22T02:23:00.4522517Z             },
2026-06-22T02:23:00.4522599Z             {
2026-06-22T02:23:00.4522709Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:23:00.4522799Z               "line": 237
2026-06-22T02:23:00.4522875Z             },
2026-06-22T02:23:00.4522957Z             {
2026-06-22T02:23:00.4523066Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:23:00.4523151Z               "line": 251
2026-06-22T02:23:00.4523239Z             },
2026-06-22T02:23:00.4523319Z             {
2026-06-22T02:23:00.4523428Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:23:00.4523510Z               "line": 263
2026-06-22T02:23:00.4523591Z             },
2026-06-22T02:23:00.4523671Z             {
2026-06-22T02:23:00.4523776Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.4523858Z               "line": 162
2026-06-22T02:23:00.4523934Z             },
2026-06-22T02:23:00.4524019Z             {
2026-06-22T02:23:00.4524124Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:23:00.4524207Z               "line": 242
2026-06-22T02:23:00.4524291Z             },
2026-06-22T02:23:00.4524396Z             {
2026-06-22T02:23:00.4524497Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4524583Z               "line": 134
2026-06-22T02:23:00.4524663Z             },
2026-06-22T02:23:00.4524747Z             {
2026-06-22T02:23:00.4524848Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4524933Z               "line": 153
2026-06-22T02:23:00.4525013Z             }
2026-06-22T02:23:00.4525103Z           ]
2026-06-22T02:23:00.4525185Z         }
2026-06-22T02:23:00.4525266Z       }
2026-06-22T02:23:00.4525351Z     },
2026-06-22T02:23:00.4525433Z     {
2026-06-22T02:23:00.4525519Z       "id": "REQ-MSG-2",
2026-06-22T02:23:00.4525766Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-22T02:23:00.4525876Z       "requiredStages": [
2026-06-22T02:23:00.4525966Z         "impl",
2026-06-22T02:23:00.4526047Z         "unit"
2026-06-22T02:23:00.4526130Z       ],
2026-06-22T02:23:00.4526214Z       "stages": {
2026-06-22T02:23:00.4526300Z         "doc": {
2026-06-22T02:23:00.4526381Z           "complete": false,
2026-06-22T02:23:00.4526473Z           "evidence": []
2026-06-22T02:23:00.4526548Z         },
2026-06-22T02:23:00.4526634Z         "impl": {
2026-06-22T02:23:00.4526720Z           "complete": true,
2026-06-22T02:23:00.4526806Z           "evidence": [
2026-06-22T02:23:00.4526886Z             {
2026-06-22T02:23:00.4526991Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4527079Z               "line": 11
2026-06-22T02:23:00.4527149Z             },
2026-06-22T02:23:00.4527234Z             {
2026-06-22T02:23:00.4527341Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:23:00.4527427Z               "line": 8
2026-06-22T02:23:00.4527506Z             }
2026-06-22T02:23:00.4527586Z           ]
2026-06-22T02:23:00.4527739Z         },
2026-06-22T02:23:00.4527817Z         "int": {
2026-06-22T02:23:00.4527901Z           "complete": false,
2026-06-22T02:23:00.4528054Z           "evidence": []
2026-06-22T02:23:00.4528135Z         },
2026-06-22T02:23:00.4528216Z         "unit": {
2026-06-22T02:23:00.4528297Z           "complete": true,
2026-06-22T02:23:00.4528388Z           "evidence": [
2026-06-22T02:23:00.4528474Z             {
2026-06-22T02:23:00.4528573Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4528660Z               "line": 7717
2026-06-22T02:23:00.4528736Z             },
2026-06-22T02:23:00.4528822Z             {
2026-06-22T02:23:00.4528921Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4529103Z               "line": 7759
2026-06-22T02:23:00.4529184Z             },
2026-06-22T02:23:00.4529261Z             {
2026-06-22T02:23:00.4529366Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4529455Z               "line": 7808
2026-06-22T02:23:00.4529551Z             },
2026-06-22T02:23:00.4529629Z             {
2026-06-22T02:23:00.4529732Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4529817Z               "line": 7831
2026-06-22T02:23:00.4529902Z             },
2026-06-22T02:23:00.4529989Z             {
2026-06-22T02:23:00.4530092Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4530168Z               "line": 9807
2026-06-22T02:23:00.4530244Z             },
2026-06-22T02:23:00.4530331Z             {
2026-06-22T02:23:00.4530421Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4530511Z               "line": 9816
2026-06-22T02:23:00.4530597Z             },
2026-06-22T02:23:00.4530669Z             {
2026-06-22T02:23:00.4530773Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4530859Z               "line": 9830
2026-06-22T02:23:00.4530931Z             }
2026-06-22T02:23:00.4531002Z           ]
2026-06-22T02:23:00.4531088Z         }
2026-06-22T02:23:00.4531174Z       }
2026-06-22T02:23:00.4531265Z     },
2026-06-22T02:23:00.4531350Z     {
2026-06-22T02:23:00.4531435Z       "id": "REQ-MSG-3",
2026-06-22T02:23:00.4531803Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-22T02:23:00.4531885Z       "requiredStages": [
2026-06-22T02:23:00.4531966Z         "impl",
2026-06-22T02:23:00.4532047Z         "unit",
2026-06-22T02:23:00.4532132Z         "int"
2026-06-22T02:23:00.4532210Z       ],
2026-06-22T02:23:00.4532290Z       "stages": {
2026-06-22T02:23:00.4532371Z         "doc": {
2026-06-22T02:23:00.4532452Z           "complete": false,
2026-06-22T02:23:00.4532548Z           "evidence": []
2026-06-22T02:23:00.4532628Z         },
2026-06-22T02:23:00.4532708Z         "impl": {
2026-06-22T02:23:00.4532794Z           "complete": true,
2026-06-22T02:23:00.4532880Z           "evidence": [
2026-06-22T02:23:00.4532959Z             {
2026-06-22T02:23:00.4533063Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:23:00.4533149Z               "line": 19
2026-06-22T02:23:00.4533240Z             },
2026-06-22T02:23:00.4533321Z             {
2026-06-22T02:23:00.4533425Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4533503Z               "line": 21
2026-06-22T02:23:00.4533589Z             },
2026-06-22T02:23:00.4533664Z             {
2026-06-22T02:23:00.4533765Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4533851Z               "line": 48
2026-06-22T02:23:00.4533927Z             },
2026-06-22T02:23:00.4534012Z             {
2026-06-22T02:23:00.4534108Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4534198Z               "line": 174
2026-06-22T02:23:00.4534275Z             }
2026-06-22T02:23:00.4534365Z           ]
2026-06-22T02:23:00.4534447Z         },
2026-06-22T02:23:00.4534527Z         "int": {
2026-06-22T02:23:00.4534617Z           "complete": true,
2026-06-22T02:23:00.4534796Z           "evidence": [
2026-06-22T02:23:00.4534884Z             {
2026-06-22T02:23:00.4535004Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:23:00.4535185Z               "line": 10
2026-06-22T02:23:00.4535266Z             },
2026-06-22T02:23:00.4535346Z             {
2026-06-22T02:23:00.4535479Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:23:00.4535554Z               "line": 56
2026-06-22T02:23:00.4535639Z             }
2026-06-22T02:23:00.4535711Z           ]
2026-06-22T02:23:00.4535798Z         },
2026-06-22T02:23:00.4535892Z         "unit": {
2026-06-22T02:23:00.4535978Z           "complete": true,
2026-06-22T02:23:00.4536065Z           "evidence": [
2026-06-22T02:23:00.4536146Z             {
2026-06-22T02:23:00.4536250Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4536336Z               "line": 228
2026-06-22T02:23:00.4536422Z             },
2026-06-22T02:23:00.4536503Z             {
2026-06-22T02:23:00.4536612Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4536695Z               "line": 247
2026-06-22T02:23:00.4536779Z             },
2026-06-22T02:23:00.4536865Z             {
2026-06-22T02:23:00.4536975Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4537056Z               "line": 270
2026-06-22T02:23:00.4537132Z             }
2026-06-22T02:23:00.4537213Z           ]
2026-06-22T02:23:00.4537290Z         }
2026-06-22T02:23:00.4537366Z       }
2026-06-22T02:23:00.4537451Z     },
2026-06-22T02:23:00.4537533Z     {
2026-06-22T02:23:00.4537620Z       "id": "REQ-MSG-4",
2026-06-22T02:23:00.4538428Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-22T02:23:00.4538523Z       "requiredStages": [
2026-06-22T02:23:00.4538600Z         "impl",
2026-06-22T02:23:00.4538686Z         "unit",
2026-06-22T02:23:00.4538766Z         "int"
2026-06-22T02:23:00.4538857Z       ],
2026-06-22T02:23:00.4539010Z       "stages": {
2026-06-22T02:23:00.4541472Z         "doc": {
2026-06-22T02:23:00.4541591Z           "complete": false,
2026-06-22T02:23:00.4541676Z           "evidence": []
2026-06-22T02:23:00.4541758Z         },
2026-06-22T02:23:00.4541840Z         "impl": {
2026-06-22T02:23:00.4541930Z           "complete": true,
2026-06-22T02:23:00.4542019Z           "evidence": [
2026-06-22T02:23:00.4542102Z             {
2026-06-22T02:23:00.4542225Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4542320Z               "line": 19
2026-06-22T02:23:00.4542397Z             },
2026-06-22T02:23:00.4542479Z             {
2026-06-22T02:23:00.4542587Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4542668Z               "line": 46
2026-06-22T02:23:00.4542746Z             },
2026-06-22T02:23:00.4542827Z             {
2026-06-22T02:23:00.4542955Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4543037Z               "line": 532
2026-06-22T02:23:00.4543123Z             },
2026-06-22T02:23:00.4543207Z             {
2026-06-22T02:23:00.4543306Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4543397Z               "line": 3110
2026-06-22T02:23:00.4543463Z             }
2026-06-22T02:23:00.4543547Z           ]
2026-06-22T02:23:00.4543623Z         },
2026-06-22T02:23:00.4543710Z         "int": {
2026-06-22T02:23:00.4543800Z           "complete": true,
2026-06-22T02:23:00.4543881Z           "evidence": [
2026-06-22T02:23:00.4543952Z             {
2026-06-22T02:23:00.4544078Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:23:00.4544163Z               "line": 98
2026-06-22T02:23:00.4544238Z             },
2026-06-22T02:23:00.4544320Z             {
2026-06-22T02:23:00.4544439Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:23:00.4544654Z               "line": 128
2026-06-22T02:23:00.4544731Z             }
2026-06-22T02:23:00.4544811Z           ]
2026-06-22T02:23:00.4544974Z         },
2026-06-22T02:23:00.4545055Z         "unit": {
2026-06-22T02:23:00.4545139Z           "complete": true,
2026-06-22T02:23:00.4545226Z           "evidence": [
2026-06-22T02:23:00.4545294Z             {
2026-06-22T02:23:00.4545402Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4545483Z               "line": 68
2026-06-22T02:23:00.4545565Z             },
2026-06-22T02:23:00.4545647Z             {
2026-06-22T02:23:00.4545755Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4545840Z               "line": 79
2026-06-22T02:23:00.4545906Z             },
2026-06-22T02:23:00.4545992Z             {
2026-06-22T02:23:00.4546090Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4546181Z               "line": 90
2026-06-22T02:23:00.4546262Z             },
2026-06-22T02:23:00.4546339Z             {
2026-06-22T02:23:00.4546452Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4546538Z               "line": 151
2026-06-22T02:23:00.4546630Z             }
2026-06-22T02:23:00.4546711Z           ]
2026-06-22T02:23:00.4546791Z         }
2026-06-22T02:23:00.4546867Z       }
2026-06-22T02:23:00.4546950Z     },
2026-06-22T02:23:00.4547025Z     {
2026-06-22T02:23:00.4547110Z       "id": "REQ-MSG-5",
2026-06-22T02:23:00.4547821Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-22T02:23:00.4547903Z       "requiredStages": [
2026-06-22T02:23:00.4547988Z         "doc",
2026-06-22T02:23:00.4548073Z         "impl",
2026-06-22T02:23:00.4548156Z         "unit"
2026-06-22T02:23:00.4548237Z       ],
2026-06-22T02:23:00.4548307Z       "stages": {
2026-06-22T02:23:00.4548393Z         "doc": {
2026-06-22T02:23:00.4548480Z           "complete": true,
2026-06-22T02:23:00.4548566Z           "evidence": [
2026-06-22T02:23:00.4548645Z             {
2026-06-22T02:23:00.4548735Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4548821Z               "line": 231
2026-06-22T02:23:00.4548894Z             }
2026-06-22T02:23:00.4549059Z           ]
2026-06-22T02:23:00.4549136Z         },
2026-06-22T02:23:00.4549223Z         "impl": {
2026-06-22T02:23:00.4549312Z           "complete": true,
2026-06-22T02:23:00.4549402Z           "evidence": [
2026-06-22T02:23:00.4549476Z             {
2026-06-22T02:23:00.4549585Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.4549665Z               "line": 60
2026-06-22T02:23:00.4549742Z             },
2026-06-22T02:23:00.4549824Z             {
2026-06-22T02:23:00.4549937Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4550018Z               "line": 126
2026-06-22T02:23:00.4550105Z             },
2026-06-22T02:23:00.4550190Z             {
2026-06-22T02:23:00.4550299Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4550386Z               "line": 135
2026-06-22T02:23:00.4550467Z             },
2026-06-22T02:23:00.4550547Z             {
2026-06-22T02:23:00.4550657Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4550749Z               "line": 149
2026-06-22T02:23:00.4550824Z             },
2026-06-22T02:23:00.4550910Z             {
2026-06-22T02:23:00.4551004Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4551095Z               "line": 178
2026-06-22T02:23:00.4551175Z             },
2026-06-22T02:23:00.4551255Z             {
2026-06-22T02:23:00.4551354Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4551436Z               "line": 2802
2026-06-22T02:23:00.4551513Z             }
2026-06-22T02:23:00.4551593Z           ]
2026-06-22T02:23:00.4551674Z         },
2026-06-22T02:23:00.4551884Z         "int": {
2026-06-22T02:23:00.4551964Z           "complete": true,
2026-06-22T02:23:00.4552051Z           "evidence": [
2026-06-22T02:23:00.4552222Z             {
2026-06-22T02:23:00.4552343Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T02:23:00.4552423Z               "line": 19
2026-06-22T02:23:00.4552504Z             }
2026-06-22T02:23:00.4552589Z           ]
2026-06-22T02:23:00.4552667Z         },
2026-06-22T02:23:00.4552743Z         "unit": {
2026-06-22T02:23:00.4552828Z           "complete": true,
2026-06-22T02:23:00.4552913Z           "evidence": [
2026-06-22T02:23:00.4552992Z             {
2026-06-22T02:23:00.4553105Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.4553186Z               "line": 192
2026-06-22T02:23:00.4553258Z             },
2026-06-22T02:23:00.4553339Z             {
2026-06-22T02:23:00.4553457Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:23:00.4553538Z               "line": 154
2026-06-22T02:23:00.4553631Z             },
2026-06-22T02:23:00.4553711Z             {
2026-06-22T02:23:00.4553814Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4553904Z               "line": 122
2026-06-22T02:23:00.4553985Z             },
2026-06-22T02:23:00.4554061Z             {
2026-06-22T02:23:00.4554169Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4554275Z               "line": 452
2026-06-22T02:23:00.4554356Z             },
2026-06-22T02:23:00.4554432Z             {
2026-06-22T02:23:00.4554532Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4554609Z               "line": 501
2026-06-22T02:23:00.4554689Z             },
2026-06-22T02:23:00.4554775Z             {
2026-06-22T02:23:00.4554880Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4554967Z               "line": 517
2026-06-22T02:23:00.4555048Z             },
2026-06-22T02:23:00.4555127Z             {
2026-06-22T02:23:00.4555229Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.4555305Z               "line": 536
2026-06-22T02:23:00.4555391Z             },
2026-06-22T02:23:00.4555471Z             {
2026-06-22T02:23:00.4555567Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4555657Z               "line": 7660
2026-06-22T02:23:00.4555729Z             }
2026-06-22T02:23:00.4555815Z           ]
2026-06-22T02:23:00.4555896Z         }
2026-06-22T02:23:00.4555981Z       }
2026-06-22T02:23:00.4556067Z     },
2026-06-22T02:23:00.4556139Z     {
2026-06-22T02:23:00.4556221Z       "id": "REQ-MSG-6",
2026-06-22T02:23:00.4557772Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-22T02:23:00.4557876Z       "requiredStages": [
2026-06-22T02:23:00.4557957Z         "doc",
2026-06-22T02:23:00.4558028Z         "impl",
2026-06-22T02:23:00.4558110Z         "unit"
2026-06-22T02:23:00.4558182Z       ],
2026-06-22T02:23:00.4558267Z       "stages": {
2026-06-22T02:23:00.4558348Z         "doc": {
2026-06-22T02:23:00.4558439Z           "complete": true,
2026-06-22T02:23:00.4558534Z           "evidence": [
2026-06-22T02:23:00.4558610Z             {
2026-06-22T02:23:00.4558706Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4558788Z               "line": 234
2026-06-22T02:23:00.4558867Z             }
2026-06-22T02:23:00.4559036Z           ]
2026-06-22T02:23:00.4559117Z         },
2026-06-22T02:23:00.4559201Z         "impl": {
2026-06-22T02:23:00.4559286Z           "complete": true,
2026-06-22T02:23:00.4559386Z           "evidence": [
2026-06-22T02:23:00.4559577Z             {
2026-06-22T02:23:00.4559701Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4559863Z               "line": 177
2026-06-22T02:23:00.4559949Z             },
2026-06-22T02:23:00.4560026Z             {
2026-06-22T02:23:00.4560145Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4560220Z               "line": 428
2026-06-22T02:23:00.4560292Z             },
2026-06-22T02:23:00.4560370Z             {
2026-06-22T02:23:00.4560478Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4560564Z               "line": 451
2026-06-22T02:23:00.4560646Z             },
2026-06-22T02:23:00.4560722Z             {
2026-06-22T02:23:00.4560831Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.4560917Z               "line": 89
2026-06-22T02:23:00.4560999Z             },
2026-06-22T02:23:00.4561075Z             {
2026-06-22T02:23:00.4561188Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4561289Z               "line": 155
2026-06-22T02:23:00.4561371Z             }
2026-06-22T02:23:00.4561460Z           ]
2026-06-22T02:23:00.4561540Z         },
2026-06-22T02:23:00.4561621Z         "int": {
2026-06-22T02:23:00.4561716Z           "complete": false,
2026-06-22T02:23:00.4561805Z           "evidence": []
2026-06-22T02:23:00.4561890Z         },
2026-06-22T02:23:00.4561973Z         "unit": {
2026-06-22T02:23:00.4562059Z           "complete": true,
2026-06-22T02:23:00.4562144Z           "evidence": [
2026-06-22T02:23:00.4562230Z             {
2026-06-22T02:23:00.4562350Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4562435Z               "line": 1746
2026-06-22T02:23:00.4562520Z             },
2026-06-22T02:23:00.4562603Z             {
2026-06-22T02:23:00.4562711Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.4562802Z               "line": 219
2026-06-22T02:23:00.4562874Z             }
2026-06-22T02:23:00.4562955Z           ]
2026-06-22T02:23:00.4563026Z         }
2026-06-22T02:23:00.4563107Z       }
2026-06-22T02:23:00.4563183Z     },
2026-06-22T02:23:00.4563270Z     {
2026-06-22T02:23:00.4563360Z       "id": "REQ-MSG-ENVELOPE",
2026-06-22T02:23:00.4566965Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-22T02:23:00.4567088Z       "requiredStages": [
2026-06-22T02:23:00.4567178Z         "doc",
2026-06-22T02:23:00.4567253Z         "impl",
2026-06-22T02:23:00.4567329Z         "unit",
2026-06-22T02:23:00.4567411Z         "int"
2026-06-22T02:23:00.4567478Z       ],
2026-06-22T02:23:00.4567559Z       "stages": {
2026-06-22T02:23:00.4567630Z         "doc": {
2026-06-22T02:23:00.4567726Z           "complete": true,
2026-06-22T02:23:00.4567816Z           "evidence": [
2026-06-22T02:23:00.4567897Z             {
2026-06-22T02:23:00.4568126Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T02:23:00.4568297Z               "line": 47
2026-06-22T02:23:00.4568441Z             }
2026-06-22T02:23:00.4568522Z           ]
2026-06-22T02:23:00.4568603Z         },
2026-06-22T02:23:00.4568680Z         "impl": {
2026-06-22T02:23:00.4568761Z           "complete": true,
2026-06-22T02:23:00.4568846Z           "evidence": [
2026-06-22T02:23:00.4568927Z             {
2026-06-22T02:23:00.4569117Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4569194Z               "line": 20
2026-06-22T02:23:00.4569281Z             },
2026-06-22T02:23:00.4569362Z             {
2026-06-22T02:23:00.4569465Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4569542Z               "line": 33
2026-06-22T02:23:00.4569620Z             },
2026-06-22T02:23:00.4569705Z             {
2026-06-22T02:23:00.4569803Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4569888Z               "line": 47
2026-06-22T02:23:00.4569975Z             },
2026-06-22T02:23:00.4570057Z             {
2026-06-22T02:23:00.4570170Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4570242Z               "line": 58
2026-06-22T02:23:00.4570314Z             },
2026-06-22T02:23:00.4570396Z             {
2026-06-22T02:23:00.4570494Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4570581Z               "line": 14
2026-06-22T02:23:00.4570662Z             },
2026-06-22T02:23:00.4570748Z             {
2026-06-22T02:23:00.4570847Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4570925Z               "line": 27
2026-06-22T02:23:00.4570995Z             },
2026-06-22T02:23:00.4571076Z             {
2026-06-22T02:23:00.4571176Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4571254Z               "line": 40
2026-06-22T02:23:00.4571334Z             },
2026-06-22T02:23:00.4571415Z             {
2026-06-22T02:23:00.4571535Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.4571616Z               "line": 92
2026-06-22T02:23:00.4571705Z             },
2026-06-22T02:23:00.4571782Z             {
2026-06-22T02:23:00.4571889Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4571973Z               "line": 143
2026-06-22T02:23:00.4572053Z             },
2026-06-22T02:23:00.4572138Z             {
2026-06-22T02:23:00.4572239Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4572323Z               "line": 216
2026-06-22T02:23:00.4572399Z             },
2026-06-22T02:23:00.4572484Z             {
2026-06-22T02:23:00.4572595Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4572670Z               "line": 533
2026-06-22T02:23:00.4572751Z             },
2026-06-22T02:23:00.4572833Z             {
2026-06-22T02:23:00.4572943Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:23:00.4573028Z               "line": 78
2026-06-22T02:23:00.4573104Z             },
2026-06-22T02:23:00.4573182Z             {
2026-06-22T02:23:00.4573277Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4573381Z               "line": 3111
2026-06-22T02:23:00.4573458Z             }
2026-06-22T02:23:00.4573548Z           ]
2026-06-22T02:23:00.4573629Z         },
2026-06-22T02:23:00.4573714Z         "int": {
2026-06-22T02:23:00.4573811Z           "complete": true,
2026-06-22T02:23:00.4573896Z           "evidence": [
2026-06-22T02:23:00.4573982Z             {
2026-06-22T02:23:00.4574112Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-22T02:23:00.4574201Z               "line": 15
2026-06-22T02:23:00.4574282Z             }
2026-06-22T02:23:00.4574363Z           ]
2026-06-22T02:23:00.4574446Z         },
2026-06-22T02:23:00.4574521Z         "unit": {
2026-06-22T02:23:00.4574611Z           "complete": true,
2026-06-22T02:23:00.4574698Z           "evidence": [
2026-06-22T02:23:00.4574784Z             {
2026-06-22T02:23:00.4575005Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4575082Z               "line": 102
2026-06-22T02:23:00.4575266Z             },
2026-06-22T02:23:00.4575347Z             {
2026-06-22T02:23:00.4575457Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:23:00.4575542Z               "line": 137
2026-06-22T02:23:00.4575609Z             },
2026-06-22T02:23:00.4575690Z             {
2026-06-22T02:23:00.4575786Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4575867Z               "line": 98
2026-06-22T02:23:00.4575947Z             },
2026-06-22T02:23:00.4576030Z             {
2026-06-22T02:23:00.4576134Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4576219Z               "line": 106
2026-06-22T02:23:00.4576306Z             },
2026-06-22T02:23:00.4576382Z             {
2026-06-22T02:23:00.4576486Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4576577Z               "line": 113
2026-06-22T02:23:00.4576669Z             },
2026-06-22T02:23:00.4576754Z             {
2026-06-22T02:23:00.4576849Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:23:00.4576945Z               "line": 122
2026-06-22T02:23:00.4577017Z             }
2026-06-22T02:23:00.4577102Z           ]
2026-06-22T02:23:00.4577173Z         }
2026-06-22T02:23:00.4577255Z       }
2026-06-22T02:23:00.4577332Z     },
2026-06-22T02:23:00.4577407Z     {
2026-06-22T02:23:00.4577515Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-22T02:23:00.4582444Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-22T02:23:00.4582570Z       "requiredStages": [
2026-06-22T02:23:00.4582642Z         "doc",
2026-06-22T02:23:00.4582728Z         "impl",
2026-06-22T02:23:00.4582809Z         "unit",
2026-06-22T02:23:00.4582887Z         "int"
2026-06-22T02:23:00.4582959Z       ],
2026-06-22T02:23:00.4583045Z       "stages": {
2026-06-22T02:23:00.4583126Z         "doc": {
2026-06-22T02:23:00.4583207Z           "complete": true,
2026-06-22T02:23:00.4583283Z           "evidence": [
2026-06-22T02:23:00.4583359Z             {
2026-06-22T02:23:00.4583498Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T02:23:00.4583583Z               "line": 277
2026-06-22T02:23:00.4583669Z             },
2026-06-22T02:23:00.4583747Z             {
2026-06-22T02:23:00.4583842Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.4584037Z               "line": 198
2026-06-22T02:23:00.4584118Z             }
2026-06-22T02:23:00.4584284Z           ]
2026-06-22T02:23:00.4584362Z         },
2026-06-22T02:23:00.4584446Z         "impl": {
2026-06-22T02:23:00.4584537Z           "complete": true,
2026-06-22T02:23:00.4584618Z           "evidence": [
2026-06-22T02:23:00.4584701Z             {
2026-06-22T02:23:00.4584818Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4584914Z               "line": 1026
2026-06-22T02:23:00.4584986Z             },
2026-06-22T02:23:00.4585076Z             {
2026-06-22T02:23:00.4585195Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4585282Z               "line": 23
2026-06-22T02:23:00.4585363Z             },
2026-06-22T02:23:00.4585442Z             {
2026-06-22T02:23:00.4585570Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4585647Z               "line": 91
2026-06-22T02:23:00.4585727Z             },
2026-06-22T02:23:00.4585817Z             {
2026-06-22T02:23:00.4585921Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4586013Z               "line": 239
2026-06-22T02:23:00.4586084Z             },
2026-06-22T02:23:00.4586174Z             {
2026-06-22T02:23:00.4586299Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4586380Z               "line": 287
2026-06-22T02:23:00.4586465Z             },
2026-06-22T02:23:00.4586541Z             {
2026-06-22T02:23:00.4586661Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4586737Z               "line": 311
2026-06-22T02:23:00.4586822Z             },
2026-06-22T02:23:00.4586904Z             {
2026-06-22T02:23:00.4587023Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4587109Z               "line": 60
2026-06-22T02:23:00.4587180Z             },
2026-06-22T02:23:00.4587262Z             {
2026-06-22T02:23:00.4587366Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4587466Z               "line": 889
2026-06-22T02:23:00.4587544Z             }
2026-06-22T02:23:00.4587634Z           ]
2026-06-22T02:23:00.4587714Z         },
2026-06-22T02:23:00.4587795Z         "int": {
2026-06-22T02:23:00.4587887Z           "complete": true,
2026-06-22T02:23:00.4587972Z           "evidence": [
2026-06-22T02:23:00.4588057Z             {
2026-06-22T02:23:00.4588195Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.4588275Z               "line": 1127
2026-06-22T02:23:00.4588360Z             },
2026-06-22T02:23:00.4588440Z             {
2026-06-22T02:23:00.4588584Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.4588665Z               "line": 1232
2026-06-22T02:23:00.4588750Z             },
2026-06-22T02:23:00.4588832Z             {
2026-06-22T02:23:00.4589036Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.4589132Z               "line": 1300
2026-06-22T02:23:00.4589208Z             },
2026-06-22T02:23:00.4589289Z             {
2026-06-22T02:23:00.4589428Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.4589504Z               "line": 1393
2026-06-22T02:23:00.4589590Z             }
2026-06-22T02:23:00.4589661Z           ]
2026-06-22T02:23:00.4589737Z         },
2026-06-22T02:23:00.4589819Z         "unit": {
2026-06-22T02:23:00.4589909Z           "complete": true,
2026-06-22T02:23:00.4589985Z           "evidence": [
2026-06-22T02:23:00.4590067Z             {
2026-06-22T02:23:00.4590186Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4590271Z               "line": 270
2026-06-22T02:23:00.4590352Z             },
2026-06-22T02:23:00.4590440Z             {
2026-06-22T02:23:00.4590557Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4590643Z               "line": 350
2026-06-22T02:23:00.4590726Z             },
2026-06-22T02:23:00.4590919Z             {
2026-06-22T02:23:00.4591033Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4591210Z               "line": 381
2026-06-22T02:23:00.4591290Z             },
2026-06-22T02:23:00.4591372Z             {
2026-06-22T02:23:00.4591496Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4591577Z               "line": 411
2026-06-22T02:23:00.4591658Z             },
2026-06-22T02:23:00.4591735Z             {
2026-06-22T02:23:00.4591854Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:23:00.4591929Z               "line": 440
2026-06-22T02:23:00.4592011Z             },
2026-06-22T02:23:00.4592092Z             {
2026-06-22T02:23:00.4592207Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4592292Z               "line": 1181
2026-06-22T02:23:00.4592374Z             }
2026-06-22T02:23:00.4592454Z           ]
2026-06-22T02:23:00.4592535Z         }
2026-06-22T02:23:00.4592626Z       }
2026-06-22T02:23:00.4592708Z     },
2026-06-22T02:23:00.4592788Z     {
2026-06-22T02:23:00.4592888Z       "id": "REQ-NET-1",
2026-06-22T02:23:00.4593061Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-22T02:23:00.4593150Z       "requiredStages": [
2026-06-22T02:23:00.4593221Z         "impl",
2026-06-22T02:23:00.4593307Z         "unit",
2026-06-22T02:23:00.4593388Z         "int"
2026-06-22T02:23:00.4593466Z       ],
2026-06-22T02:23:00.4593547Z       "stages": {
2026-06-22T02:23:00.4593629Z         "doc": {
2026-06-22T02:23:00.4593715Z           "complete": false,
2026-06-22T02:23:00.4593800Z           "evidence": []
2026-06-22T02:23:00.4593881Z         },
2026-06-22T02:23:00.4593967Z         "impl": {
2026-06-22T02:23:00.4594053Z           "complete": true,
2026-06-22T02:23:00.4594138Z           "evidence": [
2026-06-22T02:23:00.4594210Z             {
2026-06-22T02:23:00.4594330Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4594425Z               "line": 54
2026-06-22T02:23:00.4594501Z             },
2026-06-22T02:23:00.4594593Z             {
2026-06-22T02:23:00.4594706Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4594787Z               "line": 594
2026-06-22T02:23:00.4594868Z             },
2026-06-22T02:23:00.4594955Z             {
2026-06-22T02:23:00.4595055Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:23:00.4595145Z               "line": 130
2026-06-22T02:23:00.4595227Z             },
2026-06-22T02:23:00.4595303Z             {
2026-06-22T02:23:00.4595412Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4595498Z               "line": 97
2026-06-22T02:23:00.4595585Z             },
2026-06-22T02:23:00.4595655Z             {
2026-06-22T02:23:00.4595765Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4595847Z               "line": 159
2026-06-22T02:23:00.4595924Z             },
2026-06-22T02:23:00.4596012Z             {
2026-06-22T02:23:00.4596121Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4596212Z               "line": 175
2026-06-22T02:23:00.4596292Z             },
2026-06-22T02:23:00.4596377Z             {
2026-06-22T02:23:00.4596496Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4596577Z               "line": 190
2026-06-22T02:23:00.4596667Z             },
2026-06-22T02:23:00.4596748Z             {
2026-06-22T02:23:00.4596859Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4596945Z               "line": 271
2026-06-22T02:23:00.4597029Z             },
2026-06-22T02:23:00.4597111Z             {
2026-06-22T02:23:00.4597221Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4597302Z               "line": 306
2026-06-22T02:23:00.4597382Z             },
2026-06-22T02:23:00.4597464Z             {
2026-06-22T02:23:00.4597573Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4597730Z               "line": 312
2026-06-22T02:23:00.4597813Z             },
2026-06-22T02:23:00.4597959Z             {
2026-06-22T02:23:00.4598080Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4598156Z               "line": 318
2026-06-22T02:23:00.4598240Z             },
2026-06-22T02:23:00.4598327Z             {
2026-06-22T02:23:00.4598433Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4598523Z               "line": 334
2026-06-22T02:23:00.4598593Z             },
2026-06-22T02:23:00.4598673Z             {
2026-06-22T02:23:00.4598784Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4598868Z               "line": 354
2026-06-22T02:23:00.4599009Z             },
2026-06-22T02:23:00.4599092Z             {
2026-06-22T02:23:00.4599206Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:23:00.4599286Z               "line": 35
2026-06-22T02:23:00.4599377Z             },
2026-06-22T02:23:00.4599445Z             {
2026-06-22T02:23:00.4599558Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:23:00.4599644Z               "line": 85
2026-06-22T02:23:00.4599712Z             },
2026-06-22T02:23:00.4599792Z             {
2026-06-22T02:23:00.4599897Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.4599973Z               "line": 138
2026-06-22T02:23:00.4600060Z             },
2026-06-22T02:23:00.4600140Z             {
2026-06-22T02:23:00.4600245Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4600326Z               "line": 2953
2026-06-22T02:23:00.4600408Z             },
2026-06-22T02:23:00.4600488Z             {
2026-06-22T02:23:00.4600588Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4600676Z               "line": 17
2026-06-22T02:23:00.4600760Z             }
2026-06-22T02:23:00.4600841Z           ]
2026-06-22T02:23:00.4600922Z         },
2026-06-22T02:23:00.4601019Z         "int": {
2026-06-22T02:23:00.4601108Z           "complete": true,
2026-06-22T02:23:00.4601199Z           "evidence": [
2026-06-22T02:23:00.4601286Z             {
2026-06-22T02:23:00.4601413Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4601503Z               "line": 341
2026-06-22T02:23:00.4601579Z             },
2026-06-22T02:23:00.4601660Z             {
2026-06-22T02:23:00.4601775Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4601869Z               "line": 675
2026-06-22T02:23:00.4601947Z             },
2026-06-22T02:23:00.4602033Z             {
2026-06-22T02:23:00.4602156Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4602237Z               "line": 973
2026-06-22T02:23:00.4602314Z             }
2026-06-22T02:23:00.4602395Z           ]
2026-06-22T02:23:00.4602480Z         },
2026-06-22T02:23:00.4602556Z         "unit": {
2026-06-22T02:23:00.4602652Z           "complete": true,
2026-06-22T02:23:00.4602748Z           "evidence": [
2026-06-22T02:23:00.4602828Z             {
2026-06-22T02:23:00.4602944Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4603033Z               "line": 651
2026-06-22T02:23:00.4603119Z             },
2026-06-22T02:23:00.4603196Z             {
2026-06-22T02:23:00.4603306Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4603395Z               "line": 686
2026-06-22T02:23:00.4603472Z             },
2026-06-22T02:23:00.4603554Z             {
2026-06-22T02:23:00.4603672Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4603762Z               "line": 940
2026-06-22T02:23:00.4603848Z             },
2026-06-22T02:23:00.4603919Z             {
2026-06-22T02:23:00.4604036Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:23:00.4604122Z               "line": 201
2026-06-22T02:23:00.4604203Z             },
2026-06-22T02:23:00.4604285Z             {
2026-06-22T02:23:00.4604532Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4604618Z               "line": 442
2026-06-22T02:23:00.4604804Z             },
2026-06-22T02:23:00.4604886Z             {
2026-06-22T02:23:00.4604999Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4605090Z               "line": 456
2026-06-22T02:23:00.4605172Z             },
2026-06-22T02:23:00.4605257Z             {
2026-06-22T02:23:00.4605375Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4605453Z               "line": 475
2026-06-22T02:23:00.4605534Z             },
2026-06-22T02:23:00.4605610Z             {
2026-06-22T02:23:00.4605724Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:23:00.4605806Z               "line": 120
2026-06-22T02:23:00.4605887Z             },
2026-06-22T02:23:00.4605963Z             {
2026-06-22T02:23:00.4606073Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:23:00.4606164Z               "line": 163
2026-06-22T02:23:00.4606253Z             },
2026-06-22T02:23:00.4606339Z             {
2026-06-22T02:23:00.4606455Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:23:00.4606544Z               "line": 530
2026-06-22T02:23:00.4606629Z             },
2026-06-22T02:23:00.4606700Z             {
2026-06-22T02:23:00.4606810Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4606885Z               "line": 616
2026-06-22T02:23:00.4606970Z             },
2026-06-22T02:23:00.4607047Z             {
2026-06-22T02:23:00.4607147Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.4607227Z               "line": 1006
2026-06-22T02:23:00.4607308Z             }
2026-06-22T02:23:00.4607390Z           ]
2026-06-22T02:23:00.4607471Z         }
2026-06-22T02:23:00.4607556Z       }
2026-06-22T02:23:00.4607642Z     },
2026-06-22T02:23:00.4607724Z     {
2026-06-22T02:23:00.4607814Z       "id": "REQ-NET-2",
2026-06-22T02:23:00.4607981Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-22T02:23:00.4608087Z       "requiredStages": [
2026-06-22T02:23:00.4608162Z         "impl"
2026-06-22T02:23:00.4608248Z       ],
2026-06-22T02:23:00.4608330Z       "stages": {
2026-06-22T02:23:00.4608411Z         "doc": {
2026-06-22T02:23:00.4608505Z           "complete": false,
2026-06-22T02:23:00.4608591Z           "evidence": []
2026-06-22T02:23:00.4608678Z         },
2026-06-22T02:23:00.4608758Z         "impl": {
2026-06-22T02:23:00.4608839Z           "complete": true,
2026-06-22T02:23:00.4608925Z           "evidence": [
2026-06-22T02:23:00.4609092Z             {
2026-06-22T02:23:00.4609214Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.4609296Z               "line": 57
2026-06-22T02:23:00.4609377Z             },
2026-06-22T02:23:00.4609465Z             {
2026-06-22T02:23:00.4609584Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4609671Z               "line": 71
2026-06-22T02:23:00.4609761Z             },
2026-06-22T02:23:00.4609851Z             {
2026-06-22T02:23:00.4609962Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4610062Z               "line": 81
2026-06-22T02:23:00.4610142Z             },
2026-06-22T02:23:00.4610223Z             {
2026-06-22T02:23:00.4610328Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4610424Z               "line": 159
2026-06-22T02:23:00.4610509Z             },
2026-06-22T02:23:00.4610587Z             {
2026-06-22T02:23:00.4610700Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4610781Z               "line": 175
2026-06-22T02:23:00.4610867Z             },
2026-06-22T02:23:00.4610954Z             {
2026-06-22T02:23:00.4611063Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:23:00.4611148Z               "line": 190
2026-06-22T02:23:00.4611231Z             }
2026-06-22T02:23:00.4611315Z           ]
2026-06-22T02:23:00.4611396Z         },
2026-06-22T02:23:00.4614018Z         "int": {
2026-06-22T02:23:00.4614124Z           "complete": false,
2026-06-22T02:23:00.4614346Z           "evidence": []
2026-06-22T02:23:00.4614422Z         },
2026-06-22T02:23:00.4614503Z         "unit": {
2026-06-22T02:23:00.4614601Z           "complete": true,
2026-06-22T02:23:00.4614682Z           "evidence": [
2026-06-22T02:23:00.4614768Z             {
2026-06-22T02:23:00.4614883Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.4614972Z               "line": 402
2026-06-22T02:23:00.4615059Z             }
2026-06-22T02:23:00.4615141Z           ]
2026-06-22T02:23:00.4615226Z         }
2026-06-22T02:23:00.4615306Z       }
2026-06-22T02:23:00.4615389Z     },
2026-06-22T02:23:00.4615470Z     {
2026-06-22T02:23:00.4615555Z       "id": "REQ-NET-3",
2026-06-22T02:23:00.4615741Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-22T02:23:00.4615826Z       "requiredStages": [
2026-06-22T02:23:00.4615903Z         "impl",
2026-06-22T02:23:00.4615993Z         "unit"
2026-06-22T02:23:00.4616080Z       ],
2026-06-22T02:23:00.4616160Z       "stages": {
2026-06-22T02:23:00.4616250Z         "doc": {
2026-06-22T02:23:00.4616343Z           "complete": false,
2026-06-22T02:23:00.4616433Z           "evidence": []
2026-06-22T02:23:00.4616503Z         },
2026-06-22T02:23:00.4616584Z         "impl": {
2026-06-22T02:23:00.4616672Z           "complete": true,
2026-06-22T02:23:00.4616757Z           "evidence": [
2026-06-22T02:23:00.4616832Z             {
2026-06-22T02:23:00.4616953Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4617029Z               "line": 39
2026-06-22T02:23:00.4617114Z             },
2026-06-22T02:23:00.4617194Z             {
2026-06-22T02:23:00.4617299Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4617384Z               "line": 182
2026-06-22T02:23:00.4617464Z             },
2026-06-22T02:23:00.4617544Z             {
2026-06-22T02:23:00.4617649Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:23:00.4617746Z               "line": 333
2026-06-22T02:23:00.4617825Z             },
2026-06-22T02:23:00.4617906Z             {
2026-06-22T02:23:00.4618017Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:23:00.4618098Z               "line": 36
2026-06-22T02:23:00.4618183Z             },
2026-06-22T02:23:00.4618265Z             {
2026-06-22T02:23:00.4618394Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4618478Z               "line": 158
2026-06-22T02:23:00.4618560Z             },
2026-06-22T02:23:00.4618642Z             {
2026-06-22T02:23:00.4618761Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4618851Z               "line": 238
2026-06-22T02:23:00.4618933Z             },
2026-06-22T02:23:00.4619108Z             {
2026-06-22T02:23:00.4619210Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4619296Z               "line": 259
2026-06-22T02:23:00.4619389Z             },
2026-06-22T02:23:00.4619466Z             {
2026-06-22T02:23:00.4619582Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4619666Z               "line": 317
2026-06-22T02:23:00.4619747Z             },
2026-06-22T02:23:00.4619827Z             {
2026-06-22T02:23:00.4619942Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4620025Z               "line": 336
2026-06-22T02:23:00.4620101Z             },
2026-06-22T02:23:00.4620182Z             {
2026-06-22T02:23:00.4620289Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4620369Z               "line": 374
2026-06-22T02:23:00.4620449Z             },
2026-06-22T02:23:00.4620532Z             {
2026-06-22T02:23:00.4620650Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4620731Z               "line": 419
2026-06-22T02:23:00.4620812Z             },
2026-06-22T02:23:00.4620889Z             {
2026-06-22T02:23:00.4621108Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4621190Z               "line": 432
2026-06-22T02:23:00.4621384Z             },
2026-06-22T02:23:00.4621466Z             {
2026-06-22T02:23:00.4621575Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.4621665Z               "line": 29
2026-06-22T02:23:00.4621747Z             },
2026-06-22T02:23:00.4621829Z             {
2026-06-22T02:23:00.4621937Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.4622014Z               "line": 72
2026-06-22T02:23:00.4622096Z             },
2026-06-22T02:23:00.4622172Z             {
2026-06-22T02:23:00.4622276Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.4622348Z               "line": 123
2026-06-22T02:23:00.4622430Z             }
2026-06-22T02:23:00.4622505Z           ]
2026-06-22T02:23:00.4622585Z         },
2026-06-22T02:23:00.4622665Z         "int": {
2026-06-22T02:23:00.4622762Z           "complete": false,
2026-06-22T02:23:00.4622843Z           "evidence": []
2026-06-22T02:23:00.4622924Z         },
2026-06-22T02:23:00.4623004Z         "unit": {
2026-06-22T02:23:00.4623081Z           "complete": true,
2026-06-22T02:23:00.4623177Z           "evidence": [
2026-06-22T02:23:00.4623257Z             {
2026-06-22T02:23:00.4623372Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:23:00.4623458Z               "line": 223
2026-06-22T02:23:00.4623539Z             },
2026-06-22T02:23:00.4623615Z             {
2026-06-22T02:23:00.4623721Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:23:00.4623806Z               "line": 351
2026-06-22T02:23:00.4623887Z             },
2026-06-22T02:23:00.4623967Z             {
2026-06-22T02:23:00.4624073Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:23:00.4624144Z               "line": 504
2026-06-22T02:23:00.4624225Z             },
2026-06-22T02:23:00.4624307Z             {
2026-06-22T02:23:00.4624426Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:23:00.4624506Z               "line": 93
2026-06-22T02:23:00.4624592Z             },
2026-06-22T02:23:00.4624675Z             {
2026-06-22T02:23:00.4624778Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:23:00.4624854Z               "line": 142
2026-06-22T02:23:00.4624939Z             },
2026-06-22T02:23:00.4625006Z             {
2026-06-22T02:23:00.4625124Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.4625204Z               "line": 315
2026-06-22T02:23:00.4625285Z             },
2026-06-22T02:23:00.4625362Z             {
2026-06-22T02:23:00.4625467Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.4625556Z               "line": 355
2026-06-22T02:23:00.4625624Z             },
2026-06-22T02:23:00.4625706Z             {
2026-06-22T02:23:00.4625814Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:23:00.4625895Z               "line": 494
2026-06-22T02:23:00.4625972Z             }
2026-06-22T02:23:00.4626058Z           ]
2026-06-22T02:23:00.4626148Z         }
2026-06-22T02:23:00.4626225Z       }
2026-06-22T02:23:00.4626311Z     },
2026-06-22T02:23:00.4626391Z     {
2026-06-22T02:23:00.4626486Z       "id": "REQ-NODE-IDENTITY",
2026-06-22T02:23:00.4626711Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-22T02:23:00.4626797Z       "requiredStages": [
2026-06-22T02:23:00.4626873Z         "impl",
2026-06-22T02:23:00.4626955Z         "unit"
2026-06-22T02:23:00.4627035Z       ],
2026-06-22T02:23:00.4627116Z       "stages": {
2026-06-22T02:23:00.4627198Z         "doc": {
2026-06-22T02:23:00.4627284Z           "complete": false,
2026-06-22T02:23:00.4627373Z           "evidence": []
2026-06-22T02:23:00.4627454Z         },
2026-06-22T02:23:00.4627532Z         "impl": {
2026-06-22T02:23:00.4627618Z           "complete": true,
2026-06-22T02:23:00.4627698Z           "evidence": [
2026-06-22T02:23:00.4627864Z             {
2026-06-22T02:23:00.4627972Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4628119Z               "line": 60
2026-06-22T02:23:00.4628191Z             },
2026-06-22T02:23:00.4628272Z             {
2026-06-22T02:23:00.4628385Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4628462Z               "line": 68
2026-06-22T02:23:00.4628549Z             },
2026-06-22T02:23:00.4628620Z             {
2026-06-22T02:23:00.4628733Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4628816Z               "line": 86
2026-06-22T02:23:00.4628897Z             },
2026-06-22T02:23:00.4629067Z             {
2026-06-22T02:23:00.4629173Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4629258Z               "line": 120
2026-06-22T02:23:00.4629335Z             },
2026-06-22T02:23:00.4629435Z             {
2026-06-22T02:23:00.4629546Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4629640Z               "line": 127
2026-06-22T02:23:00.4629716Z             },
2026-06-22T02:23:00.4629793Z             {
2026-06-22T02:23:00.4629907Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4629988Z               "line": 143
2026-06-22T02:23:00.4630075Z             },
2026-06-22T02:23:00.4630161Z             {
2026-06-22T02:23:00.4630264Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:23:00.4630345Z               "line": 16
2026-06-22T02:23:00.4630421Z             }
2026-06-22T02:23:00.4630502Z           ]
2026-06-22T02:23:00.4630576Z         },
2026-06-22T02:23:00.4630657Z         "int": {
2026-06-22T02:23:00.4630743Z           "complete": false,
2026-06-22T02:23:00.4630820Z           "evidence": []
2026-06-22T02:23:00.4630900Z         },
2026-06-22T02:23:00.4630976Z         "unit": {
2026-06-22T02:23:00.4631063Z           "complete": true,
2026-06-22T02:23:00.4631144Z           "evidence": [
2026-06-22T02:23:00.4631225Z             {
2026-06-22T02:23:00.4631338Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4631411Z               "line": 199
2026-06-22T02:23:00.4631492Z             },
2026-06-22T02:23:00.4631567Z             {
2026-06-22T02:23:00.4631683Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4631764Z               "line": 218
2026-06-22T02:23:00.4631839Z             },
2026-06-22T02:23:00.4631920Z             {
2026-06-22T02:23:00.4632021Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4632112Z               "line": 234
2026-06-22T02:23:00.4632193Z             },
2026-06-22T02:23:00.4632269Z             {
2026-06-22T02:23:00.4632375Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:23:00.4632459Z               "line": 256
2026-06-22T02:23:00.4632540Z             },
2026-06-22T02:23:00.4632622Z             {
2026-06-22T02:23:00.4632728Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:23:00.4632816Z               "line": 124
2026-06-22T02:23:00.4632893Z             },
2026-06-22T02:23:00.4632975Z             {
2026-06-22T02:23:00.4633084Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:23:00.4633164Z               "line": 140
2026-06-22T02:23:00.4633249Z             },
2026-06-22T02:23:00.4633331Z             {
2026-06-22T02:23:00.4633432Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:23:00.4633512Z               "line": 155
2026-06-22T02:23:00.4633593Z             }
2026-06-22T02:23:00.4633675Z           ]
2026-06-22T02:23:00.4633751Z         }
2026-06-22T02:23:00.4633831Z       }
2026-06-22T02:23:00.4633913Z     },
2026-06-22T02:23:00.4633990Z     {
2026-06-22T02:23:00.4634075Z       "id": "REQ-NOTIF-1",
2026-06-22T02:23:00.4634423Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-22T02:23:00.4634504Z       "requiredStages": [
2026-06-22T02:23:00.4634719Z         "impl",
2026-06-22T02:23:00.4634790Z         "unit",
2026-06-22T02:23:00.4634872Z         "int"
2026-06-22T02:23:00.4635042Z       ],
2026-06-22T02:23:00.4635133Z       "stages": {
2026-06-22T02:23:00.4635215Z         "doc": {
2026-06-22T02:23:00.4635296Z           "complete": false,
2026-06-22T02:23:00.4635381Z           "evidence": []
2026-06-22T02:23:00.4635456Z         },
2026-06-22T02:23:00.4635533Z         "impl": {
2026-06-22T02:23:00.4635618Z           "complete": true,
2026-06-22T02:23:00.4635707Z           "evidence": [
2026-06-22T02:23:00.4635792Z             {
2026-06-22T02:23:00.4635907Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4635989Z               "line": 514
2026-06-22T02:23:00.4636069Z             },
2026-06-22T02:23:00.4636151Z             {
2026-06-22T02:23:00.4636261Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4636351Z               "line": 30
2026-06-22T02:23:00.4636431Z             },
2026-06-22T02:23:00.4636519Z             {
2026-06-22T02:23:00.4636628Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4636718Z               "line": 69
2026-06-22T02:23:00.4636790Z             },
2026-06-22T02:23:00.4636871Z             {
2026-06-22T02:23:00.4636971Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4637056Z               "line": 93
2026-06-22T02:23:00.4637133Z             },
2026-06-22T02:23:00.4637200Z             {
2026-06-22T02:23:00.4637309Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4637394Z               "line": 107
2026-06-22T02:23:00.4637473Z             },
2026-06-22T02:23:00.4637557Z             {
2026-06-22T02:23:00.4637667Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4637748Z               "line": 142
2026-06-22T02:23:00.4637834Z             },
2026-06-22T02:23:00.4637914Z             {
2026-06-22T02:23:00.4638019Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4638102Z               "line": 187
2026-06-22T02:23:00.4638183Z             },
2026-06-22T02:23:00.4638267Z             {
2026-06-22T02:23:00.4638371Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4638453Z               "line": 258
2026-06-22T02:23:00.4638518Z             },
2026-06-22T02:23:00.4638603Z             {
2026-06-22T02:23:00.4638698Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4638774Z               "line": 372
2026-06-22T02:23:00.4638846Z             },
2026-06-22T02:23:00.4638918Z             {
2026-06-22T02:23:00.4639090Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4639175Z               "line": 479
2026-06-22T02:23:00.4639261Z             },
2026-06-22T02:23:00.4639351Z             {
2026-06-22T02:23:00.4639462Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4639543Z               "line": 24
2026-06-22T02:23:00.4639608Z             },
2026-06-22T02:23:00.4639695Z             {
2026-06-22T02:23:00.4639805Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4639886Z               "line": 34
2026-06-22T02:23:00.4639967Z             },
2026-06-22T02:23:00.4640044Z             {
2026-06-22T02:23:00.4640148Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4640224Z               "line": 60
2026-06-22T02:23:00.4640305Z             },
2026-06-22T02:23:00.4640387Z             {
2026-06-22T02:23:00.4640500Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4640581Z               "line": 82
2026-06-22T02:23:00.4640664Z             },
2026-06-22T02:23:00.4640745Z             {
2026-06-22T02:23:00.4640857Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4640942Z               "line": 94
2026-06-22T02:23:00.4641019Z             },
2026-06-22T02:23:00.4641099Z             {
2026-06-22T02:23:00.4641217Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.4641399Z               "line": 96
2026-06-22T02:23:00.4641484Z             },
2026-06-22T02:23:00.4641652Z             {
2026-06-22T02:23:00.4641776Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-22T02:23:00.4641856Z               "line": 44
2026-06-22T02:23:00.4641933Z             },
2026-06-22T02:23:00.4642014Z             {
2026-06-22T02:23:00.4642128Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:23:00.4642214Z               "line": 20
2026-06-22T02:23:00.4642286Z             },
2026-06-22T02:23:00.4642371Z             {
2026-06-22T02:23:00.4642475Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:23:00.4642562Z               "line": 30
2026-06-22T02:23:00.4642639Z             },
2026-06-22T02:23:00.4642719Z             {
2026-06-22T02:23:00.4642824Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:23:00.4642906Z               "line": 50
2026-06-22T02:23:00.4642987Z             },
2026-06-22T02:23:00.4643072Z             {
2026-06-22T02:23:00.4643187Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4643274Z               "line": 28
2026-06-22T02:23:00.4643353Z             },
2026-06-22T02:23:00.4643434Z             {
2026-06-22T02:23:00.4643541Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4643626Z               "line": 126
2026-06-22T02:23:00.4643705Z             },
2026-06-22T02:23:00.4643772Z             {
2026-06-22T02:23:00.4643882Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4643974Z               "line": 161
2026-06-22T02:23:00.4644048Z             },
2026-06-22T02:23:00.4644134Z             {
2026-06-22T02:23:00.4644245Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4644330Z               "line": 202
2026-06-22T02:23:00.4644406Z             },
2026-06-22T02:23:00.4644488Z             {
2026-06-22T02:23:00.4644587Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4644673Z               "line": 213
2026-06-22T02:23:00.4644754Z             },
2026-06-22T02:23:00.4644841Z             {
2026-06-22T02:23:00.4644945Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4645025Z               "line": 238
2026-06-22T02:23:00.4645112Z             },
2026-06-22T02:23:00.4645189Z             {
2026-06-22T02:23:00.4645298Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4645379Z               "line": 261
2026-06-22T02:23:00.4645461Z             },
2026-06-22T02:23:00.4645546Z             {
2026-06-22T02:23:00.4645655Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4645746Z               "line": 86
2026-06-22T02:23:00.4645824Z             }
2026-06-22T02:23:00.4645907Z           ]
2026-06-22T02:23:00.4645988Z         },
2026-06-22T02:23:00.4646074Z         "int": {
2026-06-22T02:23:00.4646164Z           "complete": true,
2026-06-22T02:23:00.4646253Z           "evidence": [
2026-06-22T02:23:00.4646338Z             {
2026-06-22T02:23:00.4646444Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4646545Z               "line": 285
2026-06-22T02:23:00.4646620Z             },
2026-06-22T02:23:00.4646701Z             {
2026-06-22T02:23:00.4646807Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:23:00.4646892Z               "line": 145
2026-06-22T02:23:00.4646977Z             },
2026-06-22T02:23:00.4647049Z             {
2026-06-22T02:23:00.4647169Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4647249Z               "line": 684
2026-06-22T02:23:00.4647335Z             },
2026-06-22T02:23:00.4647422Z             {
2026-06-22T02:23:00.4647526Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4647621Z               "line": 1102
2026-06-22T02:23:00.4647698Z             }
2026-06-22T02:23:00.4647784Z           ]
2026-06-22T02:23:00.4647865Z         },
2026-06-22T02:23:00.4648023Z         "unit": {
2026-06-22T02:23:00.4648108Z           "complete": true,
2026-06-22T02:23:00.4648189Z           "evidence": [
2026-06-22T02:23:00.4648338Z             {
2026-06-22T02:23:00.4648446Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4648532Z               "line": 572
2026-06-22T02:23:00.4648614Z             },
2026-06-22T02:23:00.4648696Z             {
2026-06-22T02:23:00.4648803Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4648884Z               "line": 636
2026-06-22T02:23:00.4649031Z             },
2026-06-22T02:23:00.4649106Z             {
2026-06-22T02:23:00.4649215Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4649301Z               "line": 740
2026-06-22T02:23:00.4649397Z             },
2026-06-22T02:23:00.4649487Z             {
2026-06-22T02:23:00.4649592Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4649674Z               "line": 772
2026-06-22T02:23:00.4649760Z             },
2026-06-22T02:23:00.4649840Z             {
2026-06-22T02:23:00.4649951Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4650041Z               "line": 840
2026-06-22T02:23:00.4650126Z             },
2026-06-22T02:23:00.4650207Z             {
2026-06-22T02:23:00.4650313Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4650398Z               "line": 898
2026-06-22T02:23:00.4650484Z             },
2026-06-22T02:23:00.4650565Z             {
2026-06-22T02:23:00.4650670Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4650755Z               "line": 1173
2026-06-22T02:23:00.4650832Z             },
2026-06-22T02:23:00.4650914Z             {
2026-06-22T02:23:00.4651027Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4651113Z               "line": 157
2026-06-22T02:23:00.4651195Z             },
2026-06-22T02:23:00.4651272Z             {
2026-06-22T02:23:00.4651389Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4651469Z               "line": 250
2026-06-22T02:23:00.4651556Z             },
2026-06-22T02:23:00.4651641Z             {
2026-06-22T02:23:00.4651748Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:23:00.4651834Z               "line": 273
2026-06-22T02:23:00.4651916Z             },
2026-06-22T02:23:00.4652002Z             {
2026-06-22T02:23:00.4652106Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.4652178Z               "line": 355
2026-06-22T02:23:00.4652260Z             },
2026-06-22T02:23:00.4652345Z             {
2026-06-22T02:23:00.4652459Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:23:00.4652541Z               "line": 392
2026-06-22T02:23:00.4652621Z             },
2026-06-22T02:23:00.4652702Z             {
2026-06-22T02:23:00.4652823Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T02:23:00.4652913Z               "line": 131
2026-06-22T02:23:00.4652994Z             },
2026-06-22T02:23:00.4653079Z             {
2026-06-22T02:23:00.4653180Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:23:00.4653274Z               "line": 72
2026-06-22T02:23:00.4653355Z             },
2026-06-22T02:23:00.4653432Z             {
2026-06-22T02:23:00.4653538Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:23:00.4653622Z               "line": 97
2026-06-22T02:23:00.4653704Z             },
2026-06-22T02:23:00.4653786Z             {
2026-06-22T02:23:00.4653899Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4653985Z               "line": 379
2026-06-22T02:23:00.4654072Z             },
2026-06-22T02:23:00.4654148Z             {
2026-06-22T02:23:00.4654247Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4654337Z               "line": 417
2026-06-22T02:23:00.4654418Z             },
2026-06-22T02:23:00.4654499Z             {
2026-06-22T02:23:00.4654718Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4654800Z               "line": 433
2026-06-22T02:23:00.4654985Z             },
2026-06-22T02:23:00.4655067Z             {
2026-06-22T02:23:00.4655171Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4655252Z               "line": 472
2026-06-22T02:23:00.4655338Z             },
2026-06-22T02:23:00.4655411Z             {
2026-06-22T02:23:00.4655519Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4655600Z               "line": 489
2026-06-22T02:23:00.4655677Z             },
2026-06-22T02:23:00.4655764Z             {
2026-06-22T02:23:00.4655868Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4655948Z               "line": 517
2026-06-22T02:23:00.4656026Z             },
2026-06-22T02:23:00.4656107Z             {
2026-06-22T02:23:00.4656211Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:23:00.4656287Z               "line": 548
2026-06-22T02:23:00.4656384Z             },
2026-06-22T02:23:00.4656463Z             {
2026-06-22T02:23:00.4656581Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4656682Z               "line": 745
2026-06-22T02:23:00.4656767Z             }
2026-06-22T02:23:00.4656851Z           ]
2026-06-22T02:23:00.4656931Z         }
2026-06-22T02:23:00.4657004Z       }
2026-06-22T02:23:00.4657086Z     },
2026-06-22T02:23:00.4657161Z     {
2026-06-22T02:23:00.4657241Z       "id": "REQ-NOTIF-2",
2026-06-22T02:23:00.4657509Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-22T02:23:00.4657590Z       "requiredStages": [
2026-06-22T02:23:00.4657672Z         "doc",
2026-06-22T02:23:00.4657762Z         "impl",
2026-06-22T02:23:00.4657843Z         "unit",
2026-06-22T02:23:00.4657925Z         "int"
2026-06-22T02:23:00.4658006Z       ],
2026-06-22T02:23:00.4658091Z       "stages": {
2026-06-22T02:23:00.4658176Z         "doc": {
2026-06-22T02:23:00.4658273Z           "complete": true,
2026-06-22T02:23:00.4658362Z           "evidence": [
2026-06-22T02:23:00.4658443Z             {
2026-06-22T02:23:00.4658549Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4658626Z               "line": 509
2026-06-22T02:23:00.4658706Z             },
2026-06-22T02:23:00.4658792Z             {
2026-06-22T02:23:00.4658888Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.4659044Z               "line": 123
2026-06-22T02:23:00.4659126Z             }
2026-06-22T02:23:00.4659208Z           ]
2026-06-22T02:23:00.4659293Z         },
2026-06-22T02:23:00.4659373Z         "impl": {
2026-06-22T02:23:00.4659472Z           "complete": true,
2026-06-22T02:23:00.4659549Z           "evidence": [
2026-06-22T02:23:00.4659634Z             {
2026-06-22T02:23:00.4659747Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4659833Z               "line": 287
2026-06-22T02:23:00.4659919Z             },
2026-06-22T02:23:00.4660005Z             {
2026-06-22T02:23:00.4660123Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4660196Z               "line": 301
2026-06-22T02:23:00.4660281Z             },
2026-06-22T02:23:00.4660362Z             {
2026-06-22T02:23:00.4660462Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4660548Z               "line": 326
2026-06-22T02:23:00.4660629Z             },
2026-06-22T02:23:00.4660715Z             {
2026-06-22T02:23:00.4660820Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4660901Z               "line": 239
2026-06-22T02:23:00.4660977Z             },
2026-06-22T02:23:00.4661063Z             {
2026-06-22T02:23:00.4661169Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4661258Z               "line": 95
2026-06-22T02:23:00.4661339Z             },
2026-06-22T02:23:00.4661416Z             {
2026-06-22T02:23:00.4661521Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4661606Z               "line": 2225
2026-06-22T02:23:00.4661808Z             },
2026-06-22T02:23:00.4661893Z             {
2026-06-22T02:23:00.4662077Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4662163Z               "line": 2274
2026-06-22T02:23:00.4662243Z             },
2026-06-22T02:23:00.4662327Z             {
2026-06-22T02:23:00.4662428Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4662519Z               "line": 2353
2026-06-22T02:23:00.4662600Z             },
2026-06-22T02:23:00.4662671Z             {
2026-06-22T02:23:00.4662772Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4662848Z               "line": 2392
2026-06-22T02:23:00.4662919Z             }
2026-06-22T02:23:00.4663000Z           ]
2026-06-22T02:23:00.4663082Z         },
2026-06-22T02:23:00.4663163Z         "int": {
2026-06-22T02:23:00.4663244Z           "complete": true,
2026-06-22T02:23:00.4663329Z           "evidence": [
2026-06-22T02:23:00.4663411Z             {
2026-06-22T02:23:00.4663534Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4663620Z               "line": 810
2026-06-22T02:23:00.4663707Z             },
2026-06-22T02:23:00.4663792Z             {
2026-06-22T02:23:00.4663911Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4664002Z               "line": 1345
2026-06-22T02:23:00.4664079Z             }
2026-06-22T02:23:00.4664164Z           ]
2026-06-22T02:23:00.4664240Z         },
2026-06-22T02:23:00.4664322Z         "unit": {
2026-06-22T02:23:00.4664417Z           "complete": true,
2026-06-22T02:23:00.4664497Z           "evidence": [
2026-06-22T02:23:00.4664573Z             {
2026-06-22T02:23:00.4664685Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4664774Z               "line": 1022
2026-06-22T02:23:00.4664854Z             },
2026-06-22T02:23:00.4664939Z             {
2026-06-22T02:23:00.4665046Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4665131Z               "line": 1090
2026-06-22T02:23:00.4665216Z             },
2026-06-22T02:23:00.4665298Z             {
2026-06-22T02:23:00.4665407Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4665493Z               "line": 8210
2026-06-22T02:23:00.4665579Z             },
2026-06-22T02:23:00.4665661Z             {
2026-06-22T02:23:00.4665761Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4665850Z               "line": 8265
2026-06-22T02:23:00.4665932Z             }
2026-06-22T02:23:00.4666013Z           ]
2026-06-22T02:23:00.4666094Z         }
2026-06-22T02:23:00.4666179Z       }
2026-06-22T02:23:00.4666262Z     },
2026-06-22T02:23:00.4666343Z     {
2026-06-22T02:23:00.4666438Z       "id": "REQ-PAIR-1",
2026-06-22T02:23:00.4666542Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-22T02:23:00.4666639Z       "requiredStages": [
2026-06-22T02:23:00.4666718Z         "impl",
2026-06-22T02:23:00.4666804Z         "unit",
2026-06-22T02:23:00.4666891Z         "int"
2026-06-22T02:23:00.4666972Z       ],
2026-06-22T02:23:00.4667051Z       "stages": {
2026-06-22T02:23:00.4667137Z         "doc": {
2026-06-22T02:23:00.4667237Z           "complete": false,
2026-06-22T02:23:00.4667318Z           "evidence": []
2026-06-22T02:23:00.4667402Z         },
2026-06-22T02:23:00.4667482Z         "impl": {
2026-06-22T02:23:00.4667564Z           "complete": true,
2026-06-22T02:23:00.4667646Z           "evidence": [
2026-06-22T02:23:00.4667721Z             {
2026-06-22T02:23:00.4667855Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.4667936Z               "line": 27
2026-06-22T02:23:00.4668022Z             },
2026-06-22T02:23:00.4668098Z             {
2026-06-22T02:23:00.4668218Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.4668303Z               "line": 88
2026-06-22T02:23:00.4668374Z             },
2026-06-22T02:23:00.4668455Z             {
2026-06-22T02:23:00.4668571Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.4668736Z               "line": 110
2026-06-22T02:23:00.4668818Z             },
2026-06-22T02:23:00.4669042Z             {
2026-06-22T02:23:00.4669167Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.4669242Z               "line": 153
2026-06-22T02:23:00.4669342Z             },
2026-06-22T02:23:00.4669424Z             {
2026-06-22T02:23:00.4669543Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.4669633Z               "line": 182
2026-06-22T02:23:00.4669710Z             },
2026-06-22T02:23:00.4669792Z             {
2026-06-22T02:23:00.4669914Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4670004Z               "line": 29
2026-06-22T02:23:00.4670081Z             },
2026-06-22T02:23:00.4670162Z             {
2026-06-22T02:23:00.4670307Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:23:00.4670378Z               "line": 31
2026-06-22T02:23:00.4670465Z             },
2026-06-22T02:23:00.4670546Z             {
2026-06-22T02:23:00.4670664Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4670736Z               "line": 44
2026-06-22T02:23:00.4670823Z             },
2026-06-22T02:23:00.4670903Z             {
2026-06-22T02:23:00.4671017Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4671104Z               "line": 171
2026-06-22T02:23:00.4671185Z             },
2026-06-22T02:23:00.4671265Z             {
2026-06-22T02:23:00.4671371Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4671452Z               "line": 376
2026-06-22T02:23:00.4671523Z             }
2026-06-22T02:23:00.4671604Z           ]
2026-06-22T02:23:00.4671681Z         },
2026-06-22T02:23:00.4671767Z         "int": {
2026-06-22T02:23:00.4671866Z           "complete": true,
2026-06-22T02:23:00.4671947Z           "evidence": [
2026-06-22T02:23:00.4672020Z             {
2026-06-22T02:23:00.4672152Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4672234Z               "line": 645
2026-06-22T02:23:00.4672325Z             },
2026-06-22T02:23:00.4672401Z             {
2026-06-22T02:23:00.4672519Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4672609Z               "line": 887
2026-06-22T02:23:00.4672686Z             }
2026-06-22T02:23:00.4672765Z           ]
2026-06-22T02:23:00.4672836Z         },
2026-06-22T02:23:00.4672916Z         "unit": {
2026-06-22T02:23:00.4673008Z           "complete": true,
2026-06-22T02:23:00.4673099Z           "evidence": [
2026-06-22T02:23:00.4673184Z             {
2026-06-22T02:23:00.4673308Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.4673399Z               "line": 236
2026-06-22T02:23:00.4673470Z             },
2026-06-22T02:23:00.4673550Z             {
2026-06-22T02:23:00.4675958Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:23:00.4676086Z               "line": 349
2026-06-22T02:23:00.4676168Z             },
2026-06-22T02:23:00.4676250Z             {
2026-06-22T02:23:00.4676387Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4676468Z               "line": 194
2026-06-22T02:23:00.4676550Z             },
2026-06-22T02:23:00.4676630Z             {
2026-06-22T02:23:00.4676759Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4676846Z               "line": 216
2026-06-22T02:23:00.4676926Z             },
2026-06-22T02:23:00.4677007Z             {
2026-06-22T02:23:00.4677122Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4677213Z               "line": 230
2026-06-22T02:23:00.4677283Z             },
2026-06-22T02:23:00.4677364Z             {
2026-06-22T02:23:00.4677480Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4677556Z               "line": 242
2026-06-22T02:23:00.4677640Z             },
2026-06-22T02:23:00.4677855Z             {
2026-06-22T02:23:00.4677976Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4678153Z               "line": 256
2026-06-22T02:23:00.4678235Z             },
2026-06-22T02:23:00.4678314Z             {
2026-06-22T02:23:00.4678429Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4678506Z               "line": 270
2026-06-22T02:23:00.4678591Z             },
2026-06-22T02:23:00.4678672Z             {
2026-06-22T02:23:00.4678788Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4678868Z               "line": 277
2026-06-22T02:23:00.4679030Z             },
2026-06-22T02:23:00.4679102Z             {
2026-06-22T02:23:00.4679226Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:23:00.4679306Z               "line": 295
2026-06-22T02:23:00.4679384Z             },
2026-06-22T02:23:00.4679465Z             {
2026-06-22T02:23:00.4679578Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4679669Z               "line": 968
2026-06-22T02:23:00.4679751Z             },
2026-06-22T02:23:00.4679831Z             {
2026-06-22T02:23:00.4679950Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4680037Z               "line": 1051
2026-06-22T02:23:00.4680108Z             },
2026-06-22T02:23:00.4680183Z             {
2026-06-22T02:23:00.4680304Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4680386Z               "line": 1121
2026-06-22T02:23:00.4680470Z             },
2026-06-22T02:23:00.4680555Z             {
2026-06-22T02:23:00.4680679Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4680759Z               "line": 1182
2026-06-22T02:23:00.4680834Z             },
2026-06-22T02:23:00.4680919Z             {
2026-06-22T02:23:00.4681030Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4681116Z               "line": 1238
2026-06-22T02:23:00.4681196Z             },
2026-06-22T02:23:00.4681277Z             {
2026-06-22T02:23:00.4681401Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4681482Z               "line": 1457
2026-06-22T02:23:00.4681567Z             }
2026-06-22T02:23:00.4681645Z           ]
2026-06-22T02:23:00.4681726Z         }
2026-06-22T02:23:00.4681797Z       }
2026-06-22T02:23:00.4681882Z     },
2026-06-22T02:23:00.4681960Z     {
2026-06-22T02:23:00.4682045Z       "id": "REQ-PAIR-2",
2026-06-22T02:23:00.4682183Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-22T02:23:00.4682265Z       "requiredStages": [],
2026-06-22T02:23:00.4682350Z       "stages": {
2026-06-22T02:23:00.4682431Z         "doc": {
2026-06-22T02:23:00.4682522Z           "complete": false,
2026-06-22T02:23:00.4682604Z           "evidence": []
2026-06-22T02:23:00.4682684Z         },
2026-06-22T02:23:00.4682765Z         "impl": {
2026-06-22T02:23:00.4682856Z           "complete": false,
2026-06-22T02:23:00.4682943Z           "evidence": []
2026-06-22T02:23:00.4683018Z         },
2026-06-22T02:23:00.4683112Z         "int": {
2026-06-22T02:23:00.4683202Z           "complete": false,
2026-06-22T02:23:00.4683279Z           "evidence": []
2026-06-22T02:23:00.4683363Z         },
2026-06-22T02:23:00.4683448Z         "unit": {
2026-06-22T02:23:00.4683539Z           "complete": false,
2026-06-22T02:23:00.4683625Z           "evidence": []
2026-06-22T02:23:00.4683706Z         }
2026-06-22T02:23:00.4683791Z       }
2026-06-22T02:23:00.4683868Z     },
2026-06-22T02:23:00.4683950Z     {
2026-06-22T02:23:00.4684025Z       "id": "REQ-PAIR-3",
2026-06-22T02:23:00.4684168Z       "title": "Fetch current pairing code from any paired node",
2026-06-22T02:23:00.4684259Z       "requiredStages": [
2026-06-22T02:23:00.4684345Z         "impl",
2026-06-22T02:23:00.4684421Z         "unit"
2026-06-22T02:23:00.4684503Z       ],
2026-06-22T02:23:00.4684578Z       "stages": {
2026-06-22T02:23:00.4684749Z         "doc": {
2026-06-22T02:23:00.4684832Z           "complete": false,
2026-06-22T02:23:00.4684917Z           "evidence": []
2026-06-22T02:23:00.4685088Z         },
2026-06-22T02:23:00.4685176Z         "impl": {
2026-06-22T02:23:00.4685255Z           "complete": true,
2026-06-22T02:23:00.4685346Z           "evidence": [
2026-06-22T02:23:00.4685413Z             {
2026-06-22T02:23:00.4685514Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4685598Z               "line": 3259
2026-06-22T02:23:00.4685675Z             },
2026-06-22T02:23:00.4685743Z             {
2026-06-22T02:23:00.4685843Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4685922Z               "line": 3328
2026-06-22T02:23:00.4686003Z             },
2026-06-22T02:23:00.4686084Z             {
2026-06-22T02:23:00.4686180Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4686265Z               "line": 3709
2026-06-22T02:23:00.4686346Z             },
2026-06-22T02:23:00.4686437Z             {
2026-06-22T02:23:00.4686537Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4686618Z               "line": 4961
2026-06-22T02:23:00.4686699Z             }
2026-06-22T02:23:00.4686776Z           ]
2026-06-22T02:23:00.4686857Z         },
2026-06-22T02:23:00.4686933Z         "int": {
2026-06-22T02:23:00.4687014Z           "complete": false,
2026-06-22T02:23:00.4687100Z           "evidence": []
2026-06-22T02:23:00.4687181Z         },
2026-06-22T02:23:00.4687266Z         "unit": {
2026-06-22T02:23:00.4687348Z           "complete": true,
2026-06-22T02:23:00.4687434Z           "evidence": [
2026-06-22T02:23:00.4687515Z             {
2026-06-22T02:23:00.4687610Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4687697Z               "line": 9964
2026-06-22T02:23:00.4687773Z             },
2026-06-22T02:23:00.4687848Z             {
2026-06-22T02:23:00.4687943Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4688031Z               "line": 10179
2026-06-22T02:23:00.4688121Z             },
2026-06-22T02:23:00.4688195Z             {
2026-06-22T02:23:00.4688295Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4688381Z               "line": 10838
2026-06-22T02:23:00.4688461Z             },
2026-06-22T02:23:00.4688536Z             {
2026-06-22T02:23:00.4688641Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4688728Z               "line": 10857
2026-06-22T02:23:00.4688804Z             },
2026-06-22T02:23:00.4688874Z             {
2026-06-22T02:23:00.4689048Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4689133Z               "line": 10881
2026-06-22T02:23:00.4689203Z             },
2026-06-22T02:23:00.4689275Z             {
2026-06-22T02:23:00.4689372Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4689466Z               "line": 10900
2026-06-22T02:23:00.4689556Z             },
2026-06-22T02:23:00.4689638Z             {
2026-06-22T02:23:00.4689738Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4689819Z               "line": 10913
2026-06-22T02:23:00.4689900Z             },
2026-06-22T02:23:00.4689987Z             {
2026-06-22T02:23:00.4690091Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4690176Z               "line": 10922
2026-06-22T02:23:00.4690259Z             }
2026-06-22T02:23:00.4690340Z           ]
2026-06-22T02:23:00.4690414Z         }
2026-06-22T02:23:00.4690500Z       }
2026-06-22T02:23:00.4690583Z     },
2026-06-22T02:23:00.4690655Z     {
2026-06-22T02:23:00.4690738Z       "id": "REQ-PAIR-4",
2026-06-22T02:23:00.4690835Z       "title": "Subnet naming on first pairing",
2026-06-22T02:23:00.4690922Z       "requiredStages": [
2026-06-22T02:23:00.4691007Z         "impl",
2026-06-22T02:23:00.4691081Z         "unit"
2026-06-22T02:23:00.4691162Z       ],
2026-06-22T02:23:00.4691248Z       "stages": {
2026-06-22T02:23:00.4691324Z         "doc": {
2026-06-22T02:23:00.4691413Z           "complete": false,
2026-06-22T02:23:00.4691493Z           "evidence": []
2026-06-22T02:23:00.4691667Z         },
2026-06-22T02:23:00.4691756Z         "impl": {
2026-06-22T02:23:00.4691943Z           "complete": true,
2026-06-22T02:23:00.4692028Z           "evidence": [
2026-06-22T02:23:00.4692104Z             {
2026-06-22T02:23:00.4692210Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:23:00.4692300Z               "line": 174
2026-06-22T02:23:00.4692376Z             }
2026-06-22T02:23:00.4692452Z           ]
2026-06-22T02:23:00.4692530Z         },
2026-06-22T02:23:00.4692610Z         "int": {
2026-06-22T02:23:00.4692700Z           "complete": false,
2026-06-22T02:23:00.4692781Z           "evidence": []
2026-06-22T02:23:00.4692849Z         },
2026-06-22T02:23:00.4692929Z         "unit": {
2026-06-22T02:23:00.4693010Z           "complete": true,
2026-06-22T02:23:00.4693091Z           "evidence": [
2026-06-22T02:23:00.4693169Z             {
2026-06-22T02:23:00.4693291Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4693373Z               "line": 1294
2026-06-22T02:23:00.4693455Z             }
2026-06-22T02:23:00.4693536Z           ]
2026-06-22T02:23:00.4693620Z         }
2026-06-22T02:23:00.4693700Z       }
2026-06-22T02:23:00.4693781Z     },
2026-06-22T02:23:00.4693862Z     {
2026-06-22T02:23:00.4693951Z       "id": "REQ-PAIR-5",
2026-06-22T02:23:00.4694242Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-22T02:23:00.4694323Z       "requiredStages": [
2026-06-22T02:23:00.4694409Z         "impl",
2026-06-22T02:23:00.4694490Z         "unit",
2026-06-22T02:23:00.4694562Z         "int"
2026-06-22T02:23:00.4694637Z       ],
2026-06-22T02:23:00.4694719Z       "stages": {
2026-06-22T02:23:00.4694800Z         "doc": {
2026-06-22T02:23:00.4694886Z           "complete": false,
2026-06-22T02:23:00.4694971Z           "evidence": []
2026-06-22T02:23:00.4695058Z         },
2026-06-22T02:23:00.4695129Z         "impl": {
2026-06-22T02:23:00.4695224Z           "complete": true,
2026-06-22T02:23:00.4695296Z           "evidence": [
2026-06-22T02:23:00.4695382Z             {
2026-06-22T02:23:00.4695505Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4695591Z               "line": 44
2026-06-22T02:23:00.4695673Z             },
2026-06-22T02:23:00.4695745Z             {
2026-06-22T02:23:00.4695863Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4695949Z               "line": 96
2026-06-22T02:23:00.4696031Z             },
2026-06-22T02:23:00.4696111Z             {
2026-06-22T02:23:00.4696235Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4696317Z               "line": 107
2026-06-22T02:23:00.4696394Z             },
2026-06-22T02:23:00.4696473Z             {
2026-06-22T02:23:00.4696591Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4696678Z               "line": 124
2026-06-22T02:23:00.4696760Z             },
2026-06-22T02:23:00.4696845Z             {
2026-06-22T02:23:00.4696963Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4697055Z               "line": 155
2026-06-22T02:23:00.4697136Z             },
2026-06-22T02:23:00.4697216Z             {
2026-06-22T02:23:00.4697332Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4697417Z               "line": 195
2026-06-22T02:23:00.4697493Z             },
2026-06-22T02:23:00.4697574Z             {
2026-06-22T02:23:00.4697679Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4697760Z               "line": 251
2026-06-22T02:23:00.4697836Z             },
2026-06-22T02:23:00.4697918Z             {
2026-06-22T02:23:00.4698051Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4698132Z               "line": 33
2026-06-22T02:23:00.4698218Z             },
2026-06-22T02:23:00.4698300Z             {
2026-06-22T02:23:00.4698432Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4698586Z               "line": 45
2026-06-22T02:23:00.4698723Z             },
2026-06-22T02:23:00.4698803Z             {
2026-06-22T02:23:00.4698923Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4699063Z               "line": 59
2026-06-22T02:23:00.4699148Z             },
2026-06-22T02:23:00.4699230Z             {
2026-06-22T02:23:00.4699350Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4699425Z               "line": 376
2026-06-22T02:23:00.4699502Z             }
2026-06-22T02:23:00.4699578Z           ]
2026-06-22T02:23:00.4699650Z         },
2026-06-22T02:23:00.4699721Z         "int": {
2026-06-22T02:23:00.4699802Z           "complete": true,
2026-06-22T02:23:00.4699884Z           "evidence": [
2026-06-22T02:23:00.4699965Z             {
2026-06-22T02:23:00.4700078Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4700170Z               "line": 887
2026-06-22T02:23:00.4700251Z             },
2026-06-22T02:23:00.4700332Z             {
2026-06-22T02:23:00.4700460Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4700537Z               "line": 342
2026-06-22T02:23:00.4700618Z             }
2026-06-22T02:23:00.4700699Z           ]
2026-06-22T02:23:00.4700780Z         },
2026-06-22T02:23:00.4700852Z         "unit": {
2026-06-22T02:23:00.4700942Z           "complete": true,
2026-06-22T02:23:00.4701023Z           "evidence": [
2026-06-22T02:23:00.4701104Z             {
2026-06-22T02:23:00.4701215Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4701299Z               "line": 293
2026-06-22T02:23:00.4701371Z             },
2026-06-22T02:23:00.4701448Z             {
2026-06-22T02:23:00.4701558Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4701642Z               "line": 304
2026-06-22T02:23:00.4701718Z             },
2026-06-22T02:23:00.4701808Z             {
2026-06-22T02:23:00.4701926Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.4702006Z               "line": 406
2026-06-22T02:23:00.4702083Z             },
2026-06-22T02:23:00.4702160Z             {
2026-06-22T02:23:00.4702292Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4702378Z               "line": 72
2026-06-22T02:23:00.4702451Z             },
2026-06-22T02:23:00.4702536Z             {
2026-06-22T02:23:00.4702664Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4702742Z               "line": 82
2026-06-22T02:23:00.4702827Z             },
2026-06-22T02:23:00.4702904Z             {
2026-06-22T02:23:00.4703032Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4703118Z               "line": 100
2026-06-22T02:23:00.4703198Z             },
2026-06-22T02:23:00.4703274Z             {
2026-06-22T02:23:00.4703409Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4703490Z               "line": 110
2026-06-22T02:23:00.4703571Z             },
2026-06-22T02:23:00.4703642Z             {
2026-06-22T02:23:00.4703772Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:23:00.4703851Z               "line": 125
2026-06-22T02:23:00.4703933Z             },
2026-06-22T02:23:00.4704011Z             {
2026-06-22T02:23:00.4704129Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4704208Z               "line": 1044
2026-06-22T02:23:00.4704284Z             },
2026-06-22T02:23:00.4704366Z             {
2026-06-22T02:23:00.4704474Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4704554Z               "line": 1110
2026-06-22T02:23:00.4704635Z             },
2026-06-22T02:23:00.4704717Z             {
2026-06-22T02:23:00.4704835Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.4705027Z               "line": 1357
2026-06-22T02:23:00.4705108Z             }
2026-06-22T02:23:00.4705193Z           ]
2026-06-22T02:23:00.4705365Z         }
2026-06-22T02:23:00.4705447Z       }
2026-06-22T02:23:00.4705526Z     },
2026-06-22T02:23:00.4705604Z     {
2026-06-22T02:23:00.4705694Z       "id": "REQ-PAIR-6",
2026-06-22T02:23:00.4705947Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-22T02:23:00.4706042Z       "requiredStages": [
2026-06-22T02:23:00.4706118Z         "impl",
2026-06-22T02:23:00.4706204Z         "unit"
2026-06-22T02:23:00.4706286Z       ],
2026-06-22T02:23:00.4706371Z       "stages": {
2026-06-22T02:23:00.4706452Z         "doc": {
2026-06-22T02:23:00.4706538Z           "complete": false,
2026-06-22T02:23:00.4706625Z           "evidence": []
2026-06-22T02:23:00.4706704Z         },
2026-06-22T02:23:00.4706795Z         "impl": {
2026-06-22T02:23:00.4706873Z           "complete": true,
2026-06-22T02:23:00.4706973Z           "evidence": [
2026-06-22T02:23:00.4707047Z             {
2026-06-22T02:23:00.4707151Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4707238Z               "line": 3328
2026-06-22T02:23:00.4707315Z             },
2026-06-22T02:23:00.4707395Z             {
2026-06-22T02:23:00.4707495Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4707586Z               "line": 3709
2026-06-22T02:23:00.4707663Z             },
2026-06-22T02:23:00.4707743Z             {
2026-06-22T02:23:00.4707848Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.4707934Z               "line": 18
2026-06-22T02:23:00.4708015Z             },
2026-06-22T02:23:00.4708086Z             {
2026-06-22T02:23:00.4708177Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.4708258Z               "line": 49
2026-06-22T02:23:00.4708339Z             },
2026-06-22T02:23:00.4708410Z             {
2026-06-22T02:23:00.4708517Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.4708611Z               "line": 318
2026-06-22T02:23:00.4708692Z             }
2026-06-22T02:23:00.4708778Z           ]
2026-06-22T02:23:00.4708860Z         },
2026-06-22T02:23:00.4708935Z         "int": {
2026-06-22T02:23:00.4709093Z           "complete": false,
2026-06-22T02:23:00.4709175Z           "evidence": []
2026-06-22T02:23:00.4709259Z         },
2026-06-22T02:23:00.4709344Z         "unit": {
2026-06-22T02:23:00.4709449Z           "complete": true,
2026-06-22T02:23:00.4709535Z           "evidence": [
2026-06-22T02:23:00.4709609Z             {
2026-06-22T02:23:00.4709708Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4709790Z               "line": 10935
2026-06-22T02:23:00.4709877Z             },
2026-06-22T02:23:00.4709962Z             {
2026-06-22T02:23:00.4710057Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4710143Z               "line": 10952
2026-06-22T02:23:00.4710224Z             },
2026-06-22T02:23:00.4710300Z             {
2026-06-22T02:23:00.4710405Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.4710492Z               "line": 383
2026-06-22T02:23:00.4710563Z             },
2026-06-22T02:23:00.4710643Z             {
2026-06-22T02:23:00.4710745Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:23:00.4710825Z               "line": 392
2026-06-22T02:23:00.4710906Z             }
2026-06-22T02:23:00.4710977Z           ]
2026-06-22T02:23:00.4711054Z         }
2026-06-22T02:23:00.4711140Z       }
2026-06-22T02:23:00.4711211Z     },
2026-06-22T02:23:00.4711292Z     {
2026-06-22T02:23:00.4711379Z       "id": "REQ-PAIR-7",
2026-06-22T02:23:00.4711535Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-22T02:23:00.4711616Z       "requiredStages": [],
2026-06-22T02:23:00.4711704Z       "stages": {
2026-06-22T02:23:00.4711784Z         "doc": {
2026-06-22T02:23:00.4711873Z           "complete": false,
2026-06-22T02:23:00.4711955Z           "evidence": []
2026-06-22T02:23:00.4712127Z         },
2026-06-22T02:23:00.4712216Z         "impl": {
2026-06-22T02:23:00.4712297Z           "complete": false,
2026-06-22T02:23:00.4712477Z           "evidence": []
2026-06-22T02:23:00.4712561Z         },
2026-06-22T02:23:00.4712633Z         "int": {
2026-06-22T02:23:00.4712730Z           "complete": false,
2026-06-22T02:23:00.4712806Z           "evidence": []
2026-06-22T02:23:00.4712895Z         },
2026-06-22T02:23:00.4712982Z         "unit": {
2026-06-22T02:23:00.4713063Z           "complete": false,
2026-06-22T02:23:00.4713149Z           "evidence": []
2026-06-22T02:23:00.4713229Z         }
2026-06-22T02:23:00.4713307Z       }
2026-06-22T02:23:00.4713383Z     },
2026-06-22T02:23:00.4713468Z     {
2026-06-22T02:23:00.4713553Z       "id": "REQ-PAIR-8",
2026-06-22T02:23:00.4714893Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-22T02:23:00.4715006Z       "requiredStages": [
2026-06-22T02:23:00.4715090Z         "impl",
2026-06-22T02:23:00.4715171Z         "unit"
2026-06-22T02:23:00.4715248Z       ],
2026-06-22T02:23:00.4715325Z       "stages": {
2026-06-22T02:23:00.4715410Z         "doc": {
2026-06-22T02:23:00.4715495Z           "complete": false,
2026-06-22T02:23:00.4715578Z           "evidence": []
2026-06-22T02:23:00.4715653Z         },
2026-06-22T02:23:00.4715734Z         "impl": {
2026-06-22T02:23:00.4715815Z           "complete": true,
2026-06-22T02:23:00.4715902Z           "evidence": [
2026-06-22T02:23:00.4716002Z             {
2026-06-22T02:23:00.4716125Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.4716212Z               "line": 577
2026-06-22T02:23:00.4716296Z             },
2026-06-22T02:23:00.4716382Z             {
2026-06-22T02:23:00.4716507Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:23:00.4716607Z               "line": 22
2026-06-22T02:23:00.4716688Z             },
2026-06-22T02:23:00.4716769Z             {
2026-06-22T02:23:00.4716894Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:23:00.4716978Z               "line": 76
2026-06-22T02:23:00.4717055Z             },
2026-06-22T02:23:00.4717132Z             {
2026-06-22T02:23:00.4717251Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:23:00.4717341Z               "line": 127
2026-06-22T02:23:00.4717423Z             }
2026-06-22T02:23:00.4717500Z           ]
2026-06-22T02:23:00.4717579Z         },
2026-06-22T02:23:00.4717664Z         "int": {
2026-06-22T02:23:00.4717750Z           "complete": false,
2026-06-22T02:23:00.4717837Z           "evidence": []
2026-06-22T02:23:00.4717918Z         },
2026-06-22T02:23:00.4718003Z         "unit": {
2026-06-22T02:23:00.4718094Z           "complete": true,
2026-06-22T02:23:00.4718175Z           "evidence": [
2026-06-22T02:23:00.4718270Z             {
2026-06-22T02:23:00.4718374Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:23:00.4718462Z               "line": 183
2026-06-22T02:23:00.4718537Z             },
2026-06-22T02:23:00.4718617Z             {
2026-06-22T02:23:00.4718737Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:23:00.4718818Z               "line": 195
2026-06-22T02:23:00.4718899Z             },
2026-06-22T02:23:00.4719057Z             {
2026-06-22T02:23:00.4719180Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:23:00.4719271Z               "line": 211
2026-06-22T02:23:00.4719353Z             },
2026-06-22T02:23:00.4719430Z             {
2026-06-22T02:23:00.4719533Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:23:00.4719619Z               "line": 227
2026-06-22T02:23:00.4719801Z             }
2026-06-22T02:23:00.4719876Z           ]
2026-06-22T02:23:00.4719961Z         }
2026-06-22T02:23:00.4720132Z       }
2026-06-22T02:23:00.4720217Z     },
2026-06-22T02:23:00.4720283Z     {
2026-06-22T02:23:00.4720375Z       "id": "REQ-PICKER-1",
2026-06-22T02:23:00.4723872Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-22T02:23:00.4724000Z       "requiredStages": [
2026-06-22T02:23:00.4724085Z         "impl",
2026-06-22T02:23:00.4724161Z         "unit"
2026-06-22T02:23:00.4724243Z       ],
2026-06-22T02:23:00.4724323Z       "stages": {
2026-06-22T02:23:00.4724404Z         "doc": {
2026-06-22T02:23:00.4724501Z           "complete": false,
2026-06-22T02:23:00.4724596Z           "evidence": []
2026-06-22T02:23:00.4724661Z         },
2026-06-22T02:23:00.4724743Z         "impl": {
2026-06-22T02:23:00.4724830Z           "complete": true,
2026-06-22T02:23:00.4724930Z           "evidence": [
2026-06-22T02:23:00.4725000Z             {
2026-06-22T02:23:00.4725126Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4725216Z               "line": 248
2026-06-22T02:23:00.4725296Z             },
2026-06-22T02:23:00.4725367Z             {
2026-06-22T02:23:00.4725481Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4725566Z               "line": 263
2026-06-22T02:23:00.4725641Z             }
2026-06-22T02:23:00.4725722Z           ]
2026-06-22T02:23:00.4725803Z         },
2026-06-22T02:23:00.4725880Z         "int": {
2026-06-22T02:23:00.4726008Z           "complete": false,
2026-06-22T02:23:00.4726099Z           "evidence": []
2026-06-22T02:23:00.4726185Z         },
2026-06-22T02:23:00.4726266Z         "unit": {
2026-06-22T02:23:00.4726409Z           "complete": true,
2026-06-22T02:23:00.4726495Z           "evidence": [
2026-06-22T02:23:00.4726576Z             {
2026-06-22T02:23:00.4726704Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4726786Z               "line": 476
2026-06-22T02:23:00.4726876Z             },
2026-06-22T02:23:00.4726952Z             {
2026-06-22T02:23:00.4727058Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4727144Z               "line": 753
2026-06-22T02:23:00.4727220Z             },
2026-06-22T02:23:00.4727305Z             {
2026-06-22T02:23:00.4727411Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4727491Z               "line": 886
2026-06-22T02:23:00.4727572Z             },
2026-06-22T02:23:00.4727654Z             {
2026-06-22T02:23:00.4727760Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4727839Z               "line": 455
2026-06-22T02:23:00.4727915Z             }
2026-06-22T02:23:00.4727998Z           ]
2026-06-22T02:23:00.4728084Z         }
2026-06-22T02:23:00.4728163Z       }
2026-06-22T02:23:00.4728248Z     },
2026-06-22T02:23:00.4728416Z     {
2026-06-22T02:23:00.4728506Z       "id": "REQ-PICKER-2",
2026-06-22T02:23:00.4730436Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-22T02:23:00.4730636Z       "requiredStages": [
2026-06-22T02:23:00.4730720Z         "impl",
2026-06-22T02:23:00.4730801Z         "unit"
2026-06-22T02:23:00.4730887Z       ],
2026-06-22T02:23:00.4730973Z       "stages": {
2026-06-22T02:23:00.4731053Z         "doc": {
2026-06-22T02:23:00.4731139Z           "complete": false,
2026-06-22T02:23:00.4731235Z           "evidence": []
2026-06-22T02:23:00.4731316Z         },
2026-06-22T02:23:00.4731397Z         "impl": {
2026-06-22T02:23:00.4731486Z           "complete": true,
2026-06-22T02:23:00.4731574Z           "evidence": [
2026-06-22T02:23:00.4731655Z             {
2026-06-22T02:23:00.4731783Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4731860Z               "line": 183
2026-06-22T02:23:00.4731940Z             },
2026-06-22T02:23:00.4732021Z             {
2026-06-22T02:23:00.4732126Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4732208Z               "line": 296
2026-06-22T02:23:00.4732288Z             }
2026-06-22T02:23:00.4732369Z           ]
2026-06-22T02:23:00.4732445Z         },
2026-06-22T02:23:00.4732519Z         "int": {
2026-06-22T02:23:00.4732617Z           "complete": false,
2026-06-22T02:23:00.4732703Z           "evidence": []
2026-06-22T02:23:00.4732780Z         },
2026-06-22T02:23:00.4732876Z         "unit": {
2026-06-22T02:23:00.4732955Z           "complete": true,
2026-06-22T02:23:00.4733047Z           "evidence": [
2026-06-22T02:23:00.4733128Z             {
2026-06-22T02:23:00.4733252Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.4733337Z               "line": 655
2026-06-22T02:23:00.4733417Z             }
2026-06-22T02:23:00.4733503Z           ]
2026-06-22T02:23:00.4733583Z         }
2026-06-22T02:23:00.4733663Z       }
2026-06-22T02:23:00.4733744Z     },
2026-06-22T02:23:00.4733830Z     {
2026-06-22T02:23:00.4733912Z       "id": "REQ-PICKER-3",
2026-06-22T02:23:00.4736330Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-22T02:23:00.4736440Z       "requiredStages": [
2026-06-22T02:23:00.4736526Z         "impl",
2026-06-22T02:23:00.4736601Z         "unit"
2026-06-22T02:23:00.4736683Z       ],
2026-06-22T02:23:00.4736764Z       "stages": {
2026-06-22T02:23:00.4736854Z         "doc": {
2026-06-22T02:23:00.4736945Z           "complete": false,
2026-06-22T02:23:00.4737027Z           "evidence": []
2026-06-22T02:23:00.4737117Z         },
2026-06-22T02:23:00.4737197Z         "impl": {
2026-06-22T02:23:00.4737289Z           "complete": true,
2026-06-22T02:23:00.4737375Z           "evidence": [
2026-06-22T02:23:00.4737570Z             {
2026-06-22T02:23:00.4737680Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4737832Z               "line": 124
2026-06-22T02:23:00.4737913Z             }
2026-06-22T02:23:00.4737990Z           ]
2026-06-22T02:23:00.4738075Z         },
2026-06-22T02:23:00.4738147Z         "int": {
2026-06-22T02:23:00.4738238Z           "complete": false,
2026-06-22T02:23:00.4738320Z           "evidence": []
2026-06-22T02:23:00.4738399Z         },
2026-06-22T02:23:00.4738485Z         "unit": {
2026-06-22T02:23:00.4738568Z           "complete": true,
2026-06-22T02:23:00.4738658Z           "evidence": [
2026-06-22T02:23:00.4738737Z             {
2026-06-22T02:23:00.4738846Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4738928Z               "line": 369
2026-06-22T02:23:00.4739085Z             }
2026-06-22T02:23:00.4739161Z           ]
2026-06-22T02:23:00.4739242Z         }
2026-06-22T02:23:00.4739323Z       }
2026-06-22T02:23:00.4739437Z     },
2026-06-22T02:23:00.4739519Z     {
2026-06-22T02:23:00.4739615Z       "id": "REQ-PICKER-4",
2026-06-22T02:23:00.4741523Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-22T02:23:00.4741614Z       "requiredStages": [
2026-06-22T02:23:00.4741694Z         "impl",
2026-06-22T02:23:00.4741776Z         "unit"
2026-06-22T02:23:00.4741857Z       ],
2026-06-22T02:23:00.4741929Z       "stages": {
2026-06-22T02:23:00.4742023Z         "doc": {
2026-06-22T02:23:00.4742110Z           "complete": false,
2026-06-22T02:23:00.4742200Z           "evidence": []
2026-06-22T02:23:00.4742285Z         },
2026-06-22T02:23:00.4742366Z         "impl": {
2026-06-22T02:23:00.4742454Z           "complete": true,
2026-06-22T02:23:00.4742534Z           "evidence": [
2026-06-22T02:23:00.4742619Z             {
2026-06-22T02:23:00.4742744Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4742820Z               "line": 353
2026-06-22T02:23:00.4742901Z             },
2026-06-22T02:23:00.4742982Z             {
2026-06-22T02:23:00.4743093Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4743177Z               "line": 105
2026-06-22T02:23:00.4743263Z             }
2026-06-22T02:23:00.4743345Z           ]
2026-06-22T02:23:00.4743427Z         },
2026-06-22T02:23:00.4743520Z         "int": {
2026-06-22T02:23:00.4743602Z           "complete": false,
2026-06-22T02:23:00.4743698Z           "evidence": []
2026-06-22T02:23:00.4743774Z         },
2026-06-22T02:23:00.4743849Z         "unit": {
2026-06-22T02:23:00.4743944Z           "complete": true,
2026-06-22T02:23:00.4744030Z           "evidence": [
2026-06-22T02:23:00.4744115Z             {
2026-06-22T02:23:00.4744233Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4744328Z               "line": 1246
2026-06-22T02:23:00.4744400Z             },
2026-06-22T02:23:00.4744481Z             {
2026-06-22T02:23:00.4744590Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4744677Z               "line": 427
2026-06-22T02:23:00.4744767Z             }
2026-06-22T02:23:00.4744847Z           ]
2026-06-22T02:23:00.4744928Z         }
2026-06-22T02:23:00.4745011Z       }
2026-06-22T02:23:00.4745087Z     },
2026-06-22T02:23:00.4745167Z     {
2026-06-22T02:23:00.4745253Z       "id": "REQ-PICKER-5",
2026-06-22T02:23:00.4748231Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-22T02:23:00.4748555Z       "requiredStages": [
2026-06-22T02:23:00.4751167Z         "impl",
2026-06-22T02:23:00.4751271Z         "unit"
2026-06-22T02:23:00.4751367Z       ],
2026-06-22T02:23:00.4751449Z       "stages": {
2026-06-22T02:23:00.4751523Z         "doc": {
2026-06-22T02:23:00.4751614Z           "complete": false,
2026-06-22T02:23:00.4751709Z           "evidence": []
2026-06-22T02:23:00.4751790Z         },
2026-06-22T02:23:00.4751873Z         "impl": {
2026-06-22T02:23:00.4751963Z           "complete": true,
2026-06-22T02:23:00.4752045Z           "evidence": [
2026-06-22T02:23:00.4752122Z             {
2026-06-22T02:23:00.4752230Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4752312Z               "line": 1802
2026-06-22T02:23:00.4752394Z             }
2026-06-22T02:23:00.4752470Z           ]
2026-06-22T02:23:00.4752540Z         },
2026-06-22T02:23:00.4752616Z         "int": {
2026-06-22T02:23:00.4752704Z           "complete": false,
2026-06-22T02:23:00.4752794Z           "evidence": []
2026-06-22T02:23:00.4752884Z         },
2026-06-22T02:23:00.4752966Z         "unit": {
2026-06-22T02:23:00.4753052Z           "complete": true,
2026-06-22T02:23:00.4753142Z           "evidence": [
2026-06-22T02:23:00.4753222Z             {
2026-06-22T02:23:00.4753324Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4753404Z               "line": 7526
2026-06-22T02:23:00.4753480Z             }
2026-06-22T02:23:00.4753561Z           ]
2026-06-22T02:23:00.4753643Z         }
2026-06-22T02:23:00.4753723Z       }
2026-06-22T02:23:00.4753809Z     },
2026-06-22T02:23:00.4753886Z     {
2026-06-22T02:23:00.4754006Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-22T02:23:00.4755398Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-22T02:23:00.4755503Z       "requiredStages": [],
2026-06-22T02:23:00.4755585Z       "stages": {
2026-06-22T02:23:00.4755671Z         "doc": {
2026-06-22T02:23:00.4755756Z           "complete": false,
2026-06-22T02:23:00.4755837Z           "evidence": []
2026-06-22T02:23:00.4755910Z         },
2026-06-22T02:23:00.4755994Z         "impl": {
2026-06-22T02:23:00.4756080Z           "complete": false,
2026-06-22T02:23:00.4756167Z           "evidence": []
2026-06-22T02:23:00.4756243Z         },
2026-06-22T02:23:00.4756314Z         "int": {
2026-06-22T02:23:00.4756409Z           "complete": false,
2026-06-22T02:23:00.4756491Z           "evidence": []
2026-06-22T02:23:00.4756577Z         },
2026-06-22T02:23:00.4756657Z         "unit": {
2026-06-22T02:23:00.4756743Z           "complete": false,
2026-06-22T02:23:00.4756830Z           "evidence": []
2026-06-22T02:23:00.4757047Z         }
2026-06-22T02:23:00.4757133Z       }
2026-06-22T02:23:00.4757204Z     },
2026-06-22T02:23:00.4757378Z     {
2026-06-22T02:23:00.4757484Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-22T02:23:00.4758580Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-22T02:23:00.4758675Z       "requiredStages": [
2026-06-22T02:23:00.4758758Z         "impl",
2026-06-22T02:23:00.4758843Z         "unit"
2026-06-22T02:23:00.4758909Z       ],
2026-06-22T02:23:00.4759058Z       "stages": {
2026-06-22T02:23:00.4759134Z         "doc": {
2026-06-22T02:23:00.4759219Z           "complete": false,
2026-06-22T02:23:00.4759300Z           "evidence": []
2026-06-22T02:23:00.4759387Z         },
2026-06-22T02:23:00.4759472Z         "impl": {
2026-06-22T02:23:00.4759553Z           "complete": true,
2026-06-22T02:23:00.4759644Z           "evidence": [
2026-06-22T02:23:00.4759722Z             {
2026-06-22T02:23:00.4759843Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4759933Z               "line": 275
2026-06-22T02:23:00.4760014Z             }
2026-06-22T02:23:00.4760092Z           ]
2026-06-22T02:23:00.4760172Z         },
2026-06-22T02:23:00.4760257Z         "int": {
2026-06-22T02:23:00.4760349Z           "complete": false,
2026-06-22T02:23:00.4760430Z           "evidence": []
2026-06-22T02:23:00.4760511Z         },
2026-06-22T02:23:00.4760591Z         "unit": {
2026-06-22T02:23:00.4760669Z           "complete": true,
2026-06-22T02:23:00.4760749Z           "evidence": [
2026-06-22T02:23:00.4760835Z             {
2026-06-22T02:23:00.4760940Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4761026Z               "line": 400
2026-06-22T02:23:00.4761107Z             }
2026-06-22T02:23:00.4761183Z           ]
2026-06-22T02:23:00.4761269Z         }
2026-06-22T02:23:00.4761355Z       }
2026-06-22T02:23:00.4761435Z     },
2026-06-22T02:23:00.4761512Z     {
2026-06-22T02:23:00.4761618Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-22T02:23:00.4763158Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-22T02:23:00.4763254Z       "requiredStages": [
2026-06-22T02:23:00.4763335Z         "impl",
2026-06-22T02:23:00.4763406Z         "unit"
2026-06-22T02:23:00.4763497Z       ],
2026-06-22T02:23:00.4763583Z       "stages": {
2026-06-22T02:23:00.4763659Z         "doc": {
2026-06-22T02:23:00.4763763Z           "complete": false,
2026-06-22T02:23:00.4763845Z           "evidence": []
2026-06-22T02:23:00.4763927Z         },
2026-06-22T02:23:00.4764012Z         "impl": {
2026-06-22T02:23:00.4764097Z           "complete": true,
2026-06-22T02:23:00.4764180Z           "evidence": [
2026-06-22T02:23:00.4764265Z             {
2026-06-22T02:23:00.4764379Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4764465Z               "line": 654
2026-06-22T02:23:00.4764547Z             }
2026-06-22T02:23:00.4764631Z           ]
2026-06-22T02:23:00.4764712Z         },
2026-06-22T02:23:00.4764795Z         "int": {
2026-06-22T02:23:00.4764871Z           "complete": false,
2026-06-22T02:23:00.4764951Z           "evidence": []
2026-06-22T02:23:00.4765031Z         },
2026-06-22T02:23:00.4765117Z         "unit": {
2026-06-22T02:23:00.4765203Z           "complete": true,
2026-06-22T02:23:00.4765400Z           "evidence": [
2026-06-22T02:23:00.4765482Z             {
2026-06-22T02:23:00.4765677Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4765763Z               "line": 1078
2026-06-22T02:23:00.4765840Z             },
2026-06-22T02:23:00.4765912Z             {
2026-06-22T02:23:00.4766020Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4766102Z               "line": 1092
2026-06-22T02:23:00.4766183Z             }
2026-06-22T02:23:00.4766264Z           ]
2026-06-22T02:23:00.4766349Z         }
2026-06-22T02:23:00.4766431Z       }
2026-06-22T02:23:00.4766512Z     },
2026-06-22T02:23:00.4766593Z     {
2026-06-22T02:23:00.4766692Z       "id": "REQ-PICKER-UX-V013",
2026-06-22T02:23:00.4768263Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-22T02:23:00.4768369Z       "requiredStages": [],
2026-06-22T02:23:00.4768454Z       "stages": {
2026-06-22T02:23:00.4768525Z         "doc": {
2026-06-22T02:23:00.4768615Z           "complete": false,
2026-06-22T02:23:00.4768703Z           "evidence": []
2026-06-22T02:23:00.4768778Z         },
2026-06-22T02:23:00.4768854Z         "impl": {
2026-06-22T02:23:00.4769022Z           "complete": false,
2026-06-22T02:23:00.4769107Z           "evidence": []
2026-06-22T02:23:00.4769188Z         },
2026-06-22T02:23:00.4769264Z         "int": {
2026-06-22T02:23:00.4769356Z           "complete": false,
2026-06-22T02:23:00.4769451Z           "evidence": []
2026-06-22T02:23:00.4769536Z         },
2026-06-22T02:23:00.4769623Z         "unit": {
2026-06-22T02:23:00.4769717Z           "complete": false,
2026-06-22T02:23:00.4769813Z           "evidence": []
2026-06-22T02:23:00.4769889Z         }
2026-06-22T02:23:00.4769972Z       }
2026-06-22T02:23:00.4770046Z     },
2026-06-22T02:23:00.4770127Z     {
2026-06-22T02:23:00.4770219Z       "id": "REQ-PRES-1",
2026-06-22T02:23:00.4771519Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-22T02:23:00.4771619Z       "requiredStages": [
2026-06-22T02:23:00.4771700Z         "impl",
2026-06-22T02:23:00.4771776Z         "unit",
2026-06-22T02:23:00.4771863Z         "int"
2026-06-22T02:23:00.4771944Z       ],
2026-06-22T02:23:00.4772029Z       "stages": {
2026-06-22T02:23:00.4772119Z         "doc": {
2026-06-22T02:23:00.4772202Z           "complete": true,
2026-06-22T02:23:00.4772278Z           "evidence": [
2026-06-22T02:23:00.4772362Z             {
2026-06-22T02:23:00.4772468Z               "path": "docs/DEFERRED.md",
2026-06-22T02:23:00.4772545Z               "line": 11
2026-06-22T02:23:00.4772629Z             }
2026-06-22T02:23:00.4772700Z           ]
2026-06-22T02:23:00.4772781Z         },
2026-06-22T02:23:00.4772862Z         "impl": {
2026-06-22T02:23:00.4772952Z           "complete": true,
2026-06-22T02:23:00.4773046Z           "evidence": [
2026-06-22T02:23:00.4773122Z             {
2026-06-22T02:23:00.4773242Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4773327Z               "line": 515
2026-06-22T02:23:00.4773413Z             },
2026-06-22T02:23:00.4773490Z             {
2026-06-22T02:23:00.4773718Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.4773800Z               "line": 567
2026-06-22T02:23:00.4773985Z             },
2026-06-22T02:23:00.4774071Z             {
2026-06-22T02:23:00.4774177Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4774276Z               "line": 188
2026-06-22T02:23:00.4774357Z             },
2026-06-22T02:23:00.4774430Z             {
2026-06-22T02:23:00.4774548Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4774638Z               "line": 214
2026-06-22T02:23:00.4774725Z             },
2026-06-22T02:23:00.4774802Z             {
2026-06-22T02:23:00.4774949Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4775040Z               "line": 28
2026-06-22T02:23:00.4775140Z             },
2026-06-22T02:23:00.4775239Z             {
2026-06-22T02:23:00.4775355Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4775446Z               "line": 105
2026-06-22T02:23:00.4775530Z             },
2026-06-22T02:23:00.4775624Z             {
2026-06-22T02:23:00.4775739Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4775842Z               "line": 161
2026-06-22T02:23:00.4775937Z             },
2026-06-22T02:23:00.4776018Z             {
2026-06-22T02:23:00.4776143Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4776232Z               "line": 180
2026-06-22T02:23:00.4776323Z             },
2026-06-22T02:23:00.4776401Z             {
2026-06-22T02:23:00.4776533Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4776623Z               "line": 421
2026-06-22T02:23:00.4776710Z             },
2026-06-22T02:23:00.4776801Z             {
2026-06-22T02:23:00.4776919Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.4777011Z               "line": 289
2026-06-22T02:23:00.4777100Z             },
2026-06-22T02:23:00.4777186Z             {
2026-06-22T02:23:00.4777326Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.4777410Z               "line": 336
2026-06-22T02:23:00.4777505Z             },
2026-06-22T02:23:00.4777582Z             {
2026-06-22T02:23:00.4777702Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.4777791Z               "line": 362
2026-06-22T02:23:00.4777873Z             },
2026-06-22T02:23:00.4777960Z             {
2026-06-22T02:23:00.4778063Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4778153Z               "line": 100
2026-06-22T02:23:00.4778234Z             }
2026-06-22T02:23:00.4778320Z           ]
2026-06-22T02:23:00.4778413Z         },
2026-06-22T02:23:00.4778484Z         "int": {
2026-06-22T02:23:00.4778580Z           "complete": true,
2026-06-22T02:23:00.4778662Z           "evidence": [
2026-06-22T02:23:00.4778747Z             {
2026-06-22T02:23:00.4778866Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4779038Z               "line": 563
2026-06-22T02:23:00.4779128Z             },
2026-06-22T02:23:00.4779210Z             {
2026-06-22T02:23:00.4779314Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4779400Z               "line": 747
2026-06-22T02:23:00.4779495Z             },
2026-06-22T02:23:00.4779592Z             {
2026-06-22T02:23:00.4779710Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4779800Z               "line": 1165
2026-06-22T02:23:00.4779878Z             }
2026-06-22T02:23:00.4779958Z           ]
2026-06-22T02:23:00.4780044Z         },
2026-06-22T02:23:00.4780134Z         "unit": {
2026-06-22T02:23:00.4780222Z           "complete": true,
2026-06-22T02:23:00.4780311Z           "evidence": [
2026-06-22T02:23:00.4780396Z             {
2026-06-22T02:23:00.4780498Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.4780592Z               "line": 674
2026-06-22T02:23:00.4780663Z             },
2026-06-22T02:23:00.4780870Z             {
2026-06-22T02:23:00.4780982Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4781159Z               "line": 238
2026-06-22T02:23:00.4781245Z             },
2026-06-22T02:23:00.4781321Z             {
2026-06-22T02:23:00.4781440Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4781517Z               "line": 269
2026-06-22T02:23:00.4781603Z             },
2026-06-22T02:23:00.4781678Z             {
2026-06-22T02:23:00.4781794Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4781879Z               "line": 305
2026-06-22T02:23:00.4781955Z             },
2026-06-22T02:23:00.4782031Z             {
2026-06-22T02:23:00.4782142Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:23:00.4782232Z               "line": 336
2026-06-22T02:23:00.4782307Z             },
2026-06-22T02:23:00.4782389Z             {
2026-06-22T02:23:00.4782523Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.4782613Z               "line": 1217
2026-06-22T02:23:00.4782699Z             },
2026-06-22T02:23:00.4782776Z             {
2026-06-22T02:23:00.4782889Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.4782975Z               "line": 1163
2026-06-22T02:23:00.4783052Z             }
2026-06-22T02:23:00.4783133Z           ]
2026-06-22T02:23:00.4783209Z         }
2026-06-22T02:23:00.4783289Z       }
2026-06-22T02:23:00.4783370Z     },
2026-06-22T02:23:00.4783456Z     {
2026-06-22T02:23:00.4783535Z       "id": "REQ-RC-1",
2026-06-22T02:23:00.4785514Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-22T02:23:00.4785634Z       "requiredStages": [
2026-06-22T02:23:00.4785724Z         "impl",
2026-06-22T02:23:00.4785799Z         "unit",
2026-06-22T02:23:00.4785876Z         "int"
2026-06-22T02:23:00.4785958Z       ],
2026-06-22T02:23:00.4786048Z       "stages": {
2026-06-22T02:23:00.4786137Z         "doc": {
2026-06-22T02:23:00.4786232Z           "complete": false,
2026-06-22T02:23:00.4786323Z           "evidence": []
2026-06-22T02:23:00.4786407Z         },
2026-06-22T02:23:00.4786492Z         "impl": {
2026-06-22T02:23:00.4786583Z           "complete": true,
2026-06-22T02:23:00.4786669Z           "evidence": [
2026-06-22T02:23:00.4786750Z             {
2026-06-22T02:23:00.4786873Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.4786975Z               "line": 1038
2026-06-22T02:23:00.4787056Z             },
2026-06-22T02:23:00.4787150Z             {
2026-06-22T02:23:00.4787261Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4787351Z               "line": 1978
2026-06-22T02:23:00.4787427Z             },
2026-06-22T02:23:00.4787508Z             {
2026-06-22T02:23:00.4787633Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.4787718Z               "line": 967
2026-06-22T02:23:00.4787799Z             },
2026-06-22T02:23:00.4787876Z             {
2026-06-22T02:23:00.4787994Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.4788080Z               "line": 1001
2026-06-22T02:23:00.4788157Z             },
2026-06-22T02:23:00.4788243Z             {
2026-06-22T02:23:00.4788337Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4788419Z               "line": 22
2026-06-22T02:23:00.4788577Z             },
2026-06-22T02:23:00.4788652Z             {
2026-06-22T02:23:00.4788751Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4788904Z               "line": 701
2026-06-22T02:23:00.4789082Z             }
2026-06-22T02:23:00.4789164Z           ]
2026-06-22T02:23:00.4789246Z         },
2026-06-22T02:23:00.4789326Z         "int": {
2026-06-22T02:23:00.4789440Z           "complete": true,
2026-06-22T02:23:00.4789527Z           "evidence": [
2026-06-22T02:23:00.4789608Z             {
2026-06-22T02:23:00.4789717Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4789804Z               "line": 261
2026-06-22T02:23:00.4789884Z             },
2026-06-22T02:23:00.4789960Z             {
2026-06-22T02:23:00.4790075Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4790157Z               "line": 288
2026-06-22T02:23:00.4790241Z             },
2026-06-22T02:23:00.4790332Z             {
2026-06-22T02:23:00.4790433Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4790532Z               "line": 416
2026-06-22T02:23:00.4790613Z             }
2026-06-22T02:23:00.4790709Z           ]
2026-06-22T02:23:00.4790786Z         },
2026-06-22T02:23:00.4790866Z         "unit": {
2026-06-22T02:23:00.4790952Z           "complete": true,
2026-06-22T02:23:00.4791039Z           "evidence": [
2026-06-22T02:23:00.4791120Z             {
2026-06-22T02:23:00.4791233Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.4791324Z               "line": 1327
2026-06-22T02:23:00.4791402Z             },
2026-06-22T02:23:00.4791486Z             {
2026-06-22T02:23:00.4791585Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4791676Z               "line": 1133
2026-06-22T02:23:00.4791796Z             },
2026-06-22T02:23:00.4791881Z             {
2026-06-22T02:23:00.4791985Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4792068Z               "line": 1162
2026-06-22T02:23:00.4792153Z             },
2026-06-22T02:23:00.4792243Z             {
2026-06-22T02:23:00.4792339Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4792434Z               "line": 1175
2026-06-22T02:23:00.4792515Z             }
2026-06-22T02:23:00.4792605Z           ]
2026-06-22T02:23:00.4792683Z         }
2026-06-22T02:23:00.4792763Z       }
2026-06-22T02:23:00.4792853Z     },
2026-06-22T02:23:00.4792929Z     {
2026-06-22T02:23:00.4793040Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-22T02:23:00.4798712Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-22T02:23:00.4799109Z       "requiredStages": [
2026-06-22T02:23:00.4799208Z         "doc",
2026-06-22T02:23:00.4799288Z         "impl",
2026-06-22T02:23:00.4799374Z         "unit"
2026-06-22T02:23:00.4799459Z       ],
2026-06-22T02:23:00.4799539Z       "stages": {
2026-06-22T02:23:00.4799619Z         "doc": {
2026-06-22T02:23:00.4799710Z           "complete": true,
2026-06-22T02:23:00.4799801Z           "evidence": [
2026-06-22T02:23:00.4799872Z             {
2026-06-22T02:23:00.4799967Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4800059Z               "line": 345
2026-06-22T02:23:00.4800149Z             },
2026-06-22T02:23:00.4800224Z             {
2026-06-22T02:23:00.4800325Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.4800426Z               "line": 440
2026-06-22T02:23:00.4800497Z             }
2026-06-22T02:23:00.4800587Z           ]
2026-06-22T02:23:00.4800669Z         },
2026-06-22T02:23:00.4800745Z         "impl": {
2026-06-22T02:23:00.4800836Z           "complete": true,
2026-06-22T02:23:00.4800916Z           "evidence": [
2026-06-22T02:23:00.4801003Z             {
2026-06-22T02:23:00.4801097Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4801188Z               "line": 226
2026-06-22T02:23:00.4801269Z             },
2026-06-22T02:23:00.4801351Z             {
2026-06-22T02:23:00.4801454Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4801541Z               "line": 285
2026-06-22T02:23:00.4801618Z             },
2026-06-22T02:23:00.4801690Z             {
2026-06-22T02:23:00.4801798Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4801894Z               "line": 300
2026-06-22T02:23:00.4801962Z             },
2026-06-22T02:23:00.4802056Z             {
2026-06-22T02:23:00.4802155Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4802246Z               "line": 315
2026-06-22T02:23:00.4802322Z             },
2026-06-22T02:23:00.4802408Z             {
2026-06-22T02:23:00.4802512Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4802598Z               "line": 364
2026-06-22T02:23:00.4802680Z             }
2026-06-22T02:23:00.4802760Z           ]
2026-06-22T02:23:00.4802837Z         },
2026-06-22T02:23:00.4802919Z         "int": {
2026-06-22T02:23:00.4803018Z           "complete": false,
2026-06-22T02:23:00.4803113Z           "evidence": []
2026-06-22T02:23:00.4803190Z         },
2026-06-22T02:23:00.4803304Z         "unit": {
2026-06-22T02:23:00.4803399Z           "complete": true,
2026-06-22T02:23:00.4803490Z           "evidence": [
2026-06-22T02:23:00.4803567Z             {
2026-06-22T02:23:00.4803690Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4803781Z               "line": 1190
2026-06-22T02:23:00.4803858Z             },
2026-06-22T02:23:00.4803944Z             {
2026-06-22T02:23:00.4804038Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4804129Z               "line": 1305
2026-06-22T02:23:00.4804207Z             }
2026-06-22T02:23:00.4804291Z           ]
2026-06-22T02:23:00.4804376Z         }
2026-06-22T02:23:00.4804452Z       }
2026-06-22T02:23:00.4804543Z     },
2026-06-22T02:23:00.4804622Z     {
2026-06-22T02:23:00.4804726Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-22T02:23:00.4809096Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-22T02:23:00.4809553Z       "requiredStages": [
2026-06-22T02:23:00.4809636Z         "doc",
2026-06-22T02:23:00.4809716Z         "impl",
2026-06-22T02:23:00.4809800Z         "unit"
2026-06-22T02:23:00.4809886Z       ],
2026-06-22T02:23:00.4809967Z       "stages": {
2026-06-22T02:23:00.4810052Z         "doc": {
2026-06-22T02:23:00.4810146Z           "complete": true,
2026-06-22T02:23:00.4810231Z           "evidence": [
2026-06-22T02:23:00.4810308Z             {
2026-06-22T02:23:00.4810418Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.4810498Z               "line": 461
2026-06-22T02:23:00.4810580Z             }
2026-06-22T02:23:00.4810657Z           ]
2026-06-22T02:23:00.4810747Z         },
2026-06-22T02:23:00.4810832Z         "impl": {
2026-06-22T02:23:00.4810924Z           "complete": true,
2026-06-22T02:23:00.4811009Z           "evidence": [
2026-06-22T02:23:00.4811095Z             {
2026-06-22T02:23:00.4811195Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4811282Z               "line": 421
2026-06-22T02:23:00.4811371Z             },
2026-06-22T02:23:00.4811452Z             {
2026-06-22T02:23:00.4811554Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4811639Z               "line": 437
2026-06-22T02:23:00.4811720Z             }
2026-06-22T02:23:00.4811805Z           ]
2026-06-22T02:23:00.4811878Z         },
2026-06-22T02:23:00.4811968Z         "int": {
2026-06-22T02:23:00.4812049Z           "complete": false,
2026-06-22T02:23:00.4812149Z           "evidence": []
2026-06-22T02:23:00.4812231Z         },
2026-06-22T02:23:00.4812320Z         "unit": {
2026-06-22T02:23:00.4812406Z           "complete": true,
2026-06-22T02:23:00.4812489Z           "evidence": [
2026-06-22T02:23:00.4812574Z             {
2026-06-22T02:23:00.4812672Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4812772Z               "line": 1440
2026-06-22T02:23:00.4812844Z             },
2026-06-22T02:23:00.4812936Z             {
2026-06-22T02:23:00.4813048Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4813135Z               "line": 1459
2026-06-22T02:23:00.4813216Z             },
2026-06-22T02:23:00.4813297Z             {
2026-06-22T02:23:00.4813397Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4813474Z               "line": 1471
2026-06-22T02:23:00.4813559Z             },
2026-06-22T02:23:00.4813645Z             {
2026-06-22T02:23:00.4813735Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4813822Z               "line": 1499
2026-06-22T02:23:00.4813898Z             }
2026-06-22T02:23:00.4813978Z           ]
2026-06-22T02:23:00.4814059Z         }
2026-06-22T02:23:00.4814152Z       }
2026-06-22T02:23:00.4814241Z     },
2026-06-22T02:23:00.4814322Z     {
2026-06-22T02:23:00.4814428Z       "id": "REQ-RC-WIN-PASTE",
2026-06-22T02:23:00.4819093Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-22T02:23:00.4819465Z       "requiredStages": [
2026-06-22T02:23:00.4819580Z         "doc",
2026-06-22T02:23:00.4819665Z         "impl",
2026-06-22T02:23:00.4819761Z         "unit"
2026-06-22T02:23:00.4819837Z       ],
2026-06-22T02:23:00.4819928Z       "stages": {
2026-06-22T02:23:00.4820008Z         "doc": {
2026-06-22T02:23:00.4820099Z           "complete": true,
2026-06-22T02:23:00.4820186Z           "evidence": [
2026-06-22T02:23:00.4820272Z             {
2026-06-22T02:23:00.4820389Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:23:00.4820474Z               "line": 447
2026-06-22T02:23:00.4820560Z             }
2026-06-22T02:23:00.4820640Z           ]
2026-06-22T02:23:00.4820724Z         },
2026-06-22T02:23:00.4820806Z         "impl": {
2026-06-22T02:23:00.4820893Z           "complete": true,
2026-06-22T02:23:00.4820988Z           "evidence": [
2026-06-22T02:23:00.4821053Z             {
2026-06-22T02:23:00.4821160Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4821241Z               "line": 395
2026-06-22T02:23:00.4821326Z             },
2026-06-22T02:23:00.4821412Z             {
2026-06-22T02:23:00.4821503Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4821603Z               "line": 411
2026-06-22T02:23:00.4821683Z             },
2026-06-22T02:23:00.4821765Z             {
2026-06-22T02:23:00.4821865Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4821965Z               "line": 454
2026-06-22T02:23:00.4822051Z             },
2026-06-22T02:23:00.4822119Z             {
2026-06-22T02:23:00.4822227Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4822304Z               "line": 468
2026-06-22T02:23:00.4822385Z             },
2026-06-22T02:23:00.4822466Z             {
2026-06-22T02:23:00.4822575Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4822666Z               "line": 479
2026-06-22T02:23:00.4822753Z             }
2026-06-22T02:23:00.4822861Z           ]
2026-06-22T02:23:00.4822948Z         },
2026-06-22T02:23:00.4823029Z         "int": {
2026-06-22T02:23:00.4823115Z           "complete": false,
2026-06-22T02:23:00.4823204Z           "evidence": []
2026-06-22T02:23:00.4823285Z         },
2026-06-22T02:23:00.4823356Z         "unit": {
2026-06-22T02:23:00.4823443Z           "complete": true,
2026-06-22T02:23:00.4823529Z           "evidence": [
2026-06-22T02:23:00.4823613Z             {
2026-06-22T02:23:00.4823705Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4823886Z               "line": 1381
2026-06-22T02:23:00.4823966Z             },
2026-06-22T02:23:00.4824106Z             {
2026-06-22T02:23:00.4824196Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4824281Z               "line": 1402
2026-06-22T02:23:00.4824373Z             },
2026-06-22T02:23:00.4824453Z             {
2026-06-22T02:23:00.4824557Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4824644Z               "line": 1423
2026-06-22T02:23:00.4824726Z             }
2026-06-22T02:23:00.4824810Z           ]
2026-06-22T02:23:00.4824891Z         }
2026-06-22T02:23:00.4824979Z       }
2026-06-22T02:23:00.4825059Z     },
2026-06-22T02:23:00.4825139Z     {
2026-06-22T02:23:00.4825240Z       "id": "REQ-RCVIEW-1",
2026-06-22T02:23:00.4829662Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-22T02:23:00.4829782Z       "requiredStages": [
2026-06-22T02:23:00.4829859Z         "doc",
2026-06-22T02:23:00.4829944Z         "impl",
2026-06-22T02:23:00.4830030Z         "unit",
2026-06-22T02:23:00.4830112Z         "int"
2026-06-22T02:23:00.4830202Z       ],
2026-06-22T02:23:00.4830282Z       "stages": {
2026-06-22T02:23:00.4830363Z         "doc": {
2026-06-22T02:23:00.4830446Z           "complete": true,
2026-06-22T02:23:00.4830531Z           "evidence": [
2026-06-22T02:23:00.4830626Z             {
2026-06-22T02:23:00.4830717Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4830812Z               "line": 342
2026-06-22T02:23:00.4830892Z             }
2026-06-22T02:23:00.4830987Z           ]
2026-06-22T02:23:00.4831073Z         },
2026-06-22T02:23:00.4831158Z         "impl": {
2026-06-22T02:23:00.4831252Z           "complete": true,
2026-06-22T02:23:00.4831332Z           "evidence": [
2026-06-22T02:23:00.4831424Z             {
2026-06-22T02:23:00.4831534Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.4831623Z               "line": 528
2026-06-22T02:23:00.4831700Z             },
2026-06-22T02:23:00.4831787Z             {
2026-06-22T02:23:00.4831915Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4831991Z               "line": 628
2026-06-22T02:23:00.4832077Z             },
2026-06-22T02:23:00.4832158Z             {
2026-06-22T02:23:00.4832271Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4832355Z               "line": 639
2026-06-22T02:23:00.4832440Z             },
2026-06-22T02:23:00.4832525Z             {
2026-06-22T02:23:00.4832640Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4832826Z               "line": 41
2026-06-22T02:23:00.4832906Z             },
2026-06-22T02:23:00.4833088Z             {
2026-06-22T02:23:00.4833202Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4833284Z               "line": 62
2026-06-22T02:23:00.4833370Z             },
2026-06-22T02:23:00.4833445Z             {
2026-06-22T02:23:00.4833555Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4833638Z               "line": 309
2026-06-22T02:23:00.4833722Z             },
2026-06-22T02:23:00.4833802Z             {
2026-06-22T02:23:00.4833906Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:23:00.4833993Z               "line": 701
2026-06-22T02:23:00.4834075Z             }
2026-06-22T02:23:00.4834154Z           ]
2026-06-22T02:23:00.4834235Z         },
2026-06-22T02:23:00.4834327Z         "int": {
2026-06-22T02:23:00.4834413Z           "complete": true,
2026-06-22T02:23:00.4834502Z           "evidence": [
2026-06-22T02:23:00.4834594Z             {
2026-06-22T02:23:00.4834713Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4834798Z               "line": 916
2026-06-22T02:23:00.4834879Z             },
2026-06-22T02:23:00.4834966Z             {
2026-06-22T02:23:00.4835076Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4835165Z               "line": 956
2026-06-22T02:23:00.4835243Z             },
2026-06-22T02:23:00.4835324Z             {
2026-06-22T02:23:00.4835437Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4835529Z               "line": 1003
2026-06-22T02:23:00.4835610Z             },
2026-06-22T02:23:00.4835694Z             {
2026-06-22T02:23:00.4835800Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4835896Z               "line": 1155
2026-06-22T02:23:00.4835976Z             }
2026-06-22T02:23:00.4836061Z           ]
2026-06-22T02:23:00.4836146Z         },
2026-06-22T02:23:00.4836242Z         "unit": {
2026-06-22T02:23:00.4836331Z           "complete": true,
2026-06-22T02:23:00.4836426Z           "evidence": [
2026-06-22T02:23:00.4836521Z             {
2026-06-22T02:23:00.4836632Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4836726Z               "line": 175
2026-06-22T02:23:00.4836807Z             },
2026-06-22T02:23:00.4836894Z             {
2026-06-22T02:23:00.4837003Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:23:00.4837098Z               "line": 195
2026-06-22T02:23:00.4837190Z             }
2026-06-22T02:23:00.4837270Z           ]
2026-06-22T02:23:00.4837355Z         }
2026-06-22T02:23:00.4837437Z       }
2026-06-22T02:23:00.4837519Z     },
2026-06-22T02:23:00.4837589Z     {
2026-06-22T02:23:00.4837689Z       "id": "REQ-REACH-1",
2026-06-22T02:23:00.4837838Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-22T02:23:00.4837923Z       "requiredStages": [
2026-06-22T02:23:00.4841229Z         "impl",
2026-06-22T02:23:00.4841364Z         "unit",
2026-06-22T02:23:00.4841448Z         "int"
2026-06-22T02:23:00.4841523Z       ],
2026-06-22T02:23:00.4841609Z       "stages": {
2026-06-22T02:23:00.4841699Z         "doc": {
2026-06-22T02:23:00.4841783Z           "complete": false,
2026-06-22T02:23:00.4841878Z           "evidence": []
2026-06-22T02:23:00.4841955Z         },
2026-06-22T02:23:00.4842042Z         "impl": {
2026-06-22T02:23:00.4842136Z           "complete": true,
2026-06-22T02:23:00.4842222Z           "evidence": [
2026-06-22T02:23:00.4842313Z             {
2026-06-22T02:23:00.4842441Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4842527Z               "line": 628
2026-06-22T02:23:00.4842610Z             },
2026-06-22T02:23:00.4842695Z             {
2026-06-22T02:23:00.4842813Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:23:00.4842900Z               "line": 76
2026-06-22T02:23:00.4842985Z             },
2026-06-22T02:23:00.4843066Z             {
2026-06-22T02:23:00.4843314Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:23:00.4843395Z               "line": 222
2026-06-22T02:23:00.4843578Z             },
2026-06-22T02:23:00.4843652Z             {
2026-06-22T02:23:00.4843772Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:23:00.4843859Z               "line": 422
2026-06-22T02:23:00.4843939Z             },
2026-06-22T02:23:00.4844015Z             {
2026-06-22T02:23:00.4844125Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:23:00.4844207Z               "line": 529
2026-06-22T02:23:00.4844292Z             },
2026-06-22T02:23:00.4844377Z             {
2026-06-22T02:23:00.4844500Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:23:00.4844582Z               "line": 39
2026-06-22T02:23:00.4844663Z             },
2026-06-22T02:23:00.4844743Z             {
2026-06-22T02:23:00.4844849Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4844939Z               "line": 301
2026-06-22T02:23:00.4845030Z             },
2026-06-22T02:23:00.4845111Z             {
2026-06-22T02:23:00.4845221Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:23:00.4845302Z               "line": 88
2026-06-22T02:23:00.4845386Z             },
2026-06-22T02:23:00.4845474Z             {
2026-06-22T02:23:00.4845583Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:23:00.4845668Z               "line": 98
2026-06-22T02:23:00.4845755Z             },
2026-06-22T02:23:00.4845827Z             {
2026-06-22T02:23:00.4845945Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4846030Z               "line": 233
2026-06-22T02:23:00.4846113Z             }
2026-06-22T02:23:00.4846199Z           ]
2026-06-22T02:23:00.4846278Z         },
2026-06-22T02:23:00.4846365Z         "int": {
2026-06-22T02:23:00.4846456Z           "complete": true,
2026-06-22T02:23:00.4846546Z           "evidence": [
2026-06-22T02:23:00.4846626Z             {
2026-06-22T02:23:00.4846764Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4846854Z               "line": 415
2026-06-22T02:23:00.4846938Z             },
2026-06-22T02:23:00.4847024Z             {
2026-06-22T02:23:00.4847144Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.4847230Z               "line": 520
2026-06-22T02:23:00.4847310Z             },
2026-06-22T02:23:00.4847396Z             {
2026-06-22T02:23:00.4847516Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4847596Z               "line": 998
2026-06-22T02:23:00.4847682Z             },
2026-06-22T02:23:00.4847759Z             {
2026-06-22T02:23:00.4847878Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.4847963Z               "line": 1383
2026-06-22T02:23:00.4848050Z             }
2026-06-22T02:23:00.4848135Z           ]
2026-06-22T02:23:00.4848216Z         },
2026-06-22T02:23:00.4848307Z         "unit": {
2026-06-22T02:23:00.4848408Z           "complete": true,
2026-06-22T02:23:00.4848488Z           "evidence": [
2026-06-22T02:23:00.4848569Z             {
2026-06-22T02:23:00.4848694Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:23:00.4848779Z               "line": 639
2026-06-22T02:23:00.4848860Z             },
2026-06-22T02:23:00.4849014Z             {
2026-06-22T02:23:00.4849122Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:23:00.4849208Z               "line": 660
2026-06-22T02:23:00.4849295Z             },
2026-06-22T02:23:00.4849386Z             {
2026-06-22T02:23:00.4849517Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:23:00.4849603Z               "line": 771
2026-06-22T02:23:00.4849684Z             },
2026-06-22T02:23:00.4849763Z             {
2026-06-22T02:23:00.4849881Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:23:00.4849958Z               "line": 93
2026-06-22T02:23:00.4850044Z             },
2026-06-22T02:23:00.4850229Z             {
2026-06-22T02:23:00.4850335Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:23:00.4850506Z               "line": 224
2026-06-22T02:23:00.4850579Z             },
2026-06-22T02:23:00.4850664Z             {
2026-06-22T02:23:00.4850768Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:23:00.4850845Z               "line": 96
2026-06-22T02:23:00.4850927Z             },
2026-06-22T02:23:00.4851007Z             {
2026-06-22T02:23:00.4851116Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:23:00.4851198Z               "line": 146
2026-06-22T02:23:00.4851280Z             },
2026-06-22T02:23:00.4851350Z             {
2026-06-22T02:23:00.4851455Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.4851537Z               "line": 698
2026-06-22T02:23:00.4851618Z             },
2026-06-22T02:23:00.4851703Z             {
2026-06-22T02:23:00.4851799Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:23:00.4851891Z               "line": 118
2026-06-22T02:23:00.4851970Z             },
2026-06-22T02:23:00.4852041Z             {
2026-06-22T02:23:00.4852150Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:23:00.4852232Z               "line": 148
2026-06-22T02:23:00.4852315Z             },
2026-06-22T02:23:00.4852401Z             {
2026-06-22T02:23:00.4852520Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4852607Z               "line": 928
2026-06-22T02:23:00.4852692Z             }
2026-06-22T02:23:00.4852777Z           ]
2026-06-22T02:23:00.4852855Z         }
2026-06-22T02:23:00.4852940Z       }
2026-06-22T02:23:00.4853020Z     },
2026-06-22T02:23:00.4853101Z     {
2026-06-22T02:23:00.4853189Z       "id": "REQ-REACH-2",
2026-06-22T02:23:00.4853340Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-22T02:23:00.4853426Z       "requiredStages": [],
2026-06-22T02:23:00.4853508Z       "stages": {
2026-06-22T02:23:00.4853588Z         "doc": {
2026-06-22T02:23:00.4853683Z           "complete": false,
2026-06-22T02:23:00.4853765Z           "evidence": []
2026-06-22T02:23:00.4853856Z         },
2026-06-22T02:23:00.4853932Z         "impl": {
2026-06-22T02:23:00.4854027Z           "complete": false,
2026-06-22T02:23:00.4854109Z           "evidence": []
2026-06-22T02:23:00.4854194Z         },
2026-06-22T02:23:00.4854275Z         "int": {
2026-06-22T02:23:00.4854356Z           "complete": false,
2026-06-22T02:23:00.4854453Z           "evidence": []
2026-06-22T02:23:00.4854537Z         },
2026-06-22T02:23:00.4854623Z         "unit": {
2026-06-22T02:23:00.4854710Z           "complete": false,
2026-06-22T02:23:00.4854800Z           "evidence": []
2026-06-22T02:23:00.4854884Z         }
2026-06-22T02:23:00.4854969Z       }
2026-06-22T02:23:00.4855051Z     },
2026-06-22T02:23:00.4855128Z     {
2026-06-22T02:23:00.4855237Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-22T02:23:00.4858667Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-22T02:23:00.4858867Z       "requiredStages": [
2026-06-22T02:23:00.4859091Z         "doc",
2026-06-22T02:23:00.4859177Z         "impl",
2026-06-22T02:23:00.4859268Z         "unit",
2026-06-22T02:23:00.4859353Z         "int"
2026-06-22T02:23:00.4859439Z       ],
2026-06-22T02:23:00.4859541Z       "stages": {
2026-06-22T02:23:00.4859621Z         "doc": {
2026-06-22T02:23:00.4859705Z           "complete": true,
2026-06-22T02:23:00.4859782Z           "evidence": [
2026-06-22T02:23:00.4859855Z             {
2026-06-22T02:23:00.4859955Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4860034Z               "line": 372
2026-06-22T02:23:00.4860120Z             }
2026-06-22T02:23:00.4860206Z           ]
2026-06-22T02:23:00.4860286Z         },
2026-06-22T02:23:00.4860365Z         "impl": {
2026-06-22T02:23:00.4860456Z           "complete": true,
2026-06-22T02:23:00.4860537Z           "evidence": [
2026-06-22T02:23:00.4860619Z             {
2026-06-22T02:23:00.4860737Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4860814Z               "line": 110
2026-06-22T02:23:00.4860886Z             }
2026-06-22T02:23:00.4860972Z           ]
2026-06-22T02:23:00.4861047Z         },
2026-06-22T02:23:00.4861129Z         "int": {
2026-06-22T02:23:00.4861215Z           "complete": true,
2026-06-22T02:23:00.4861301Z           "evidence": [
2026-06-22T02:23:00.4861381Z             {
2026-06-22T02:23:00.4861511Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-22T02:23:00.4861591Z               "line": 26
2026-06-22T02:23:00.4861662Z             }
2026-06-22T02:23:00.4861743Z           ]
2026-06-22T02:23:00.4861821Z         },
2026-06-22T02:23:00.4861906Z         "unit": {
2026-06-22T02:23:00.4861991Z           "complete": true,
2026-06-22T02:23:00.4862078Z           "evidence": [
2026-06-22T02:23:00.4862155Z             {
2026-06-22T02:23:00.4862258Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:23:00.4862344Z               "line": 320
2026-06-22T02:23:00.4862427Z             }
2026-06-22T02:23:00.4862512Z           ]
2026-06-22T02:23:00.4862596Z         }
2026-06-22T02:23:00.4862667Z       }
2026-06-22T02:23:00.4862749Z     },
2026-06-22T02:23:00.4862830Z     {
2026-06-22T02:23:00.4862923Z       "id": "REQ-REL-1",
2026-06-22T02:23:00.4863294Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-22T02:23:00.4863390Z       "requiredStages": [
2026-06-22T02:23:00.4863472Z         "doc",
2026-06-22T02:23:00.4863547Z         "impl"
2026-06-22T02:23:00.4863628Z       ],
2026-06-22T02:23:00.4863710Z       "stages": {
2026-06-22T02:23:00.4863795Z         "doc": {
2026-06-22T02:23:00.4863881Z           "complete": true,
2026-06-22T02:23:00.4863957Z           "evidence": [
2026-06-22T02:23:00.4864039Z             {
2026-06-22T02:23:00.4864253Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-22T02:23:00.4864344Z               "line": 3
2026-06-22T02:23:00.4864434Z             }
2026-06-22T02:23:00.4864520Z           ]
2026-06-22T02:23:00.4864601Z         },
2026-06-22T02:23:00.4864688Z         "impl": {
2026-06-22T02:23:00.4864777Z           "complete": true,
2026-06-22T02:23:00.4864859Z           "evidence": [
2026-06-22T02:23:00.4864945Z             {
2026-06-22T02:23:00.4865074Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T02:23:00.4865164Z               "line": 11
2026-06-22T02:23:00.4865250Z             },
2026-06-22T02:23:00.4865323Z             {
2026-06-22T02:23:00.4865430Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4865516Z               "line": 265
2026-06-22T02:23:00.4865602Z             }
2026-06-22T02:23:00.4865683Z           ]
2026-06-22T02:23:00.4865769Z         },
2026-06-22T02:23:00.4865854Z         "int": {
2026-06-22T02:23:00.4865940Z           "complete": false,
2026-06-22T02:23:00.4866140Z           "evidence": []
2026-06-22T02:23:00.4866221Z         },
2026-06-22T02:23:00.4866379Z         "unit": {
2026-06-22T02:23:00.4866459Z           "complete": false,
2026-06-22T02:23:00.4866551Z           "evidence": []
2026-06-22T02:23:00.4866642Z         }
2026-06-22T02:23:00.4866722Z       }
2026-06-22T02:23:00.4866808Z     },
2026-06-22T02:23:00.4866885Z     {
2026-06-22T02:23:00.4866975Z       "id": "REQ-REL-2",
2026-06-22T02:23:00.4867437Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-22T02:23:00.4867529Z       "requiredStages": [
2026-06-22T02:23:00.4867619Z         "impl",
2026-06-22T02:23:00.4867694Z         "int"
2026-06-22T02:23:00.4867775Z       ],
2026-06-22T02:23:00.4867856Z       "stages": {
2026-06-22T02:23:00.4867941Z         "doc": {
2026-06-22T02:23:00.4868025Z           "complete": true,
2026-06-22T02:23:00.4868110Z           "evidence": [
2026-06-22T02:23:00.4868197Z             {
2026-06-22T02:23:00.4868298Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-22T02:23:00.4868388Z               "line": 6
2026-06-22T02:23:00.4868459Z             }
2026-06-22T02:23:00.4868541Z           ]
2026-06-22T02:23:00.4868622Z         },
2026-06-22T02:23:00.4868697Z         "impl": {
2026-06-22T02:23:00.4868788Z           "complete": true,
2026-06-22T02:23:00.4868870Z           "evidence": [
2026-06-22T02:23:00.4869017Z             {
2026-06-22T02:23:00.4869122Z               "path": ".github/workflows/release.yml",
2026-06-22T02:23:00.4869199Z               "line": 16
2026-06-22T02:23:00.4869279Z             },
2026-06-22T02:23:00.4869379Z             {
2026-06-22T02:23:00.4869504Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4869589Z               "line": 352
2026-06-22T02:23:00.4869675Z             },
2026-06-22T02:23:00.4869756Z             {
2026-06-22T02:23:00.4869857Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4869942Z               "line": 426
2026-06-22T02:23:00.4870018Z             },
2026-06-22T02:23:00.4870110Z             {
2026-06-22T02:23:00.4870209Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4870295Z               "line": 588
2026-06-22T02:23:00.4870372Z             },
2026-06-22T02:23:00.4870453Z             {
2026-06-22T02:23:00.4870552Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4870632Z               "line": 720
2026-06-22T02:23:00.4870713Z             }
2026-06-22T02:23:00.4870789Z           ]
2026-06-22T02:23:00.4870874Z         },
2026-06-22T02:23:00.4870954Z         "int": {
2026-06-22T02:23:00.4871035Z           "complete": true,
2026-06-22T02:23:00.4871122Z           "evidence": [
2026-06-22T02:23:00.4871203Z             {
2026-06-22T02:23:00.4871321Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-22T02:23:00.4871408Z               "line": 13
2026-06-22T02:23:00.4871498Z             }
2026-06-22T02:23:00.4871574Z           ]
2026-06-22T02:23:00.4871655Z         },
2026-06-22T02:23:00.4871747Z         "unit": {
2026-06-22T02:23:00.4871832Z           "complete": false,
2026-06-22T02:23:00.4871926Z           "evidence": []
2026-06-22T02:23:00.4871998Z         }
2026-06-22T02:23:00.4872076Z       }
2026-06-22T02:23:00.4872146Z     },
2026-06-22T02:23:00.4872227Z     {
2026-06-22T02:23:00.4872318Z       "id": "REQ-REL-3",
2026-06-22T02:23:00.4872739Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-22T02:23:00.4872827Z       "requiredStages": [
2026-06-22T02:23:00.4872904Z         "impl",
2026-06-22T02:23:00.4872992Z         "unit"
2026-06-22T02:23:00.4873073Z       ],
2026-06-22T02:23:00.4873156Z       "stages": {
2026-06-22T02:23:00.4873228Z         "doc": {
2026-06-22T02:23:00.4873318Z           "complete": false,
2026-06-22T02:23:00.4873530Z           "evidence": []
2026-06-22T02:23:00.4873602Z         },
2026-06-22T02:23:00.4873684Z         "impl": {
2026-06-22T02:23:00.4873864Z           "complete": true,
2026-06-22T02:23:00.4873955Z           "evidence": [
2026-06-22T02:23:00.4874036Z             {
2026-06-22T02:23:00.4874159Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4874246Z               "line": 237
2026-06-22T02:23:00.4874318Z             },
2026-06-22T02:23:00.4874394Z             {
2026-06-22T02:23:00.4874498Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4874585Z               "line": 289
2026-06-22T02:23:00.4874666Z             },
2026-06-22T02:23:00.4874742Z             {
2026-06-22T02:23:00.4874847Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4874924Z               "line": 329
2026-06-22T02:23:00.4875004Z             },
2026-06-22T02:23:00.4875085Z             {
2026-06-22T02:23:00.4875180Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4875267Z               "line": 353
2026-06-22T02:23:00.4875356Z             },
2026-06-22T02:23:00.4875442Z             {
2026-06-22T02:23:00.4875539Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.4875625Z               "line": 394
2026-06-22T02:23:00.4875704Z             }
2026-06-22T02:23:00.4875786Z           ]
2026-06-22T02:23:00.4875868Z         },
2026-06-22T02:23:00.4875949Z         "int": {
2026-06-22T02:23:00.4876042Z           "complete": false,
2026-06-22T02:23:00.4876127Z           "evidence": []
2026-06-22T02:23:00.4876210Z         },
2026-06-22T02:23:00.4876282Z         "unit": {
2026-06-22T02:23:00.4876371Z           "complete": true,
2026-06-22T02:23:00.4876466Z           "evidence": [
2026-06-22T02:23:00.4876549Z             {
2026-06-22T02:23:00.4876662Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4876753Z               "line": 1045
2026-06-22T02:23:00.4876835Z             },
2026-06-22T02:23:00.4876920Z             {
2026-06-22T02:23:00.4877029Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.4877125Z               "line": 1104
2026-06-22T02:23:00.4877202Z             }
2026-06-22T02:23:00.4877287Z           ]
2026-06-22T02:23:00.4877358Z         }
2026-06-22T02:23:00.4877445Z       }
2026-06-22T02:23:00.4877522Z     },
2026-06-22T02:23:00.4877611Z     {
2026-06-22T02:23:00.4877697Z       "id": "REQ-RUN-PICKER",
2026-06-22T02:23:00.4882397Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-22T02:23:00.4882617Z       "requiredStages": [
2026-06-22T02:23:00.4882697Z         "doc",
2026-06-22T02:23:00.4882883Z         "impl",
2026-06-22T02:23:00.4882965Z         "unit"
2026-06-22T02:23:00.4883045Z       ],
2026-06-22T02:23:00.4883126Z       "stages": {
2026-06-22T02:23:00.4883198Z         "doc": {
2026-06-22T02:23:00.4883294Z           "complete": true,
2026-06-22T02:23:00.4883378Z           "evidence": [
2026-06-22T02:23:00.4883460Z             {
2026-06-22T02:23:00.4883542Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4883633Z               "line": 349
2026-06-22T02:23:00.4883721Z             }
2026-06-22T02:23:00.4883802Z           ]
2026-06-22T02:23:00.4883883Z         },
2026-06-22T02:23:00.4883968Z         "impl": {
2026-06-22T02:23:00.4884062Z           "complete": true,
2026-06-22T02:23:00.4884147Z           "evidence": [
2026-06-22T02:23:00.4884234Z             {
2026-06-22T02:23:00.4884344Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4884424Z               "line": 958
2026-06-22T02:23:00.4884511Z             },
2026-06-22T02:23:00.4884587Z             {
2026-06-22T02:23:00.4884692Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4884782Z               "line": 968
2026-06-22T02:23:00.4884859Z             },
2026-06-22T02:23:00.4884949Z             {
2026-06-22T02:23:00.4885053Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4885136Z               "line": 9
2026-06-22T02:23:00.4885221Z             },
2026-06-22T02:23:00.4885302Z             {
2026-06-22T02:23:00.4885416Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:23:00.4885494Z               "line": 67
2026-06-22T02:23:00.4885574Z             },
2026-06-22T02:23:00.4885646Z             {
2026-06-22T02:23:00.4885760Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T02:23:00.4885837Z               "line": 16
2026-06-22T02:23:00.4885926Z             },
2026-06-22T02:23:00.4886002Z             {
2026-06-22T02:23:00.4886114Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T02:23:00.4886194Z               "line": 254
2026-06-22T02:23:00.4886269Z             },
2026-06-22T02:23:00.4886361Z             {
2026-06-22T02:23:00.4886471Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4886565Z               "line": 11
2026-06-22T02:23:00.4886650Z             },
2026-06-22T02:23:00.4886731Z             {
2026-06-22T02:23:00.4886852Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4886936Z               "line": 115
2026-06-22T02:23:00.4887022Z             },
2026-06-22T02:23:00.4887109Z             {
2026-06-22T02:23:00.4887218Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4887308Z               "line": 554
2026-06-22T02:23:00.4887390Z             },
2026-06-22T02:23:00.4887475Z             {
2026-06-22T02:23:00.4887584Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4887685Z               "line": 635
2026-06-22T02:23:00.4887767Z             },
2026-06-22T02:23:00.4887852Z             {
2026-06-22T02:23:00.4887966Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4888048Z               "line": 694
2026-06-22T02:23:00.4888128Z             },
2026-06-22T02:23:00.4888205Z             {
2026-06-22T02:23:00.4888320Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4888406Z               "line": 747
2026-06-22T02:23:00.4888490Z             },
2026-06-22T02:23:00.4888576Z             {
2026-06-22T02:23:00.4888678Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4888777Z               "line": 785
2026-06-22T02:23:00.4888852Z             },
2026-06-22T02:23:00.4888933Z             {
2026-06-22T02:23:00.4889122Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4889203Z               "line": 8
2026-06-22T02:23:00.4889284Z             }
2026-06-22T02:23:00.4889365Z           ]
2026-06-22T02:23:00.4889603Z         },
2026-06-22T02:23:00.4889680Z         "int": {
2026-06-22T02:23:00.4889766Z           "complete": false,
2026-06-22T02:23:00.4889942Z           "evidence": []
2026-06-22T02:23:00.4890023Z         },
2026-06-22T02:23:00.4890108Z         "unit": {
2026-06-22T02:23:00.4890194Z           "complete": true,
2026-06-22T02:23:00.4890277Z           "evidence": [
2026-06-22T02:23:00.4890352Z             {
2026-06-22T02:23:00.4890461Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4890542Z               "line": 7638
2026-06-22T02:23:00.4890629Z             },
2026-06-22T02:23:00.4890714Z             {
2026-06-22T02:23:00.4890814Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4890901Z               "line": 7649
2026-06-22T02:23:00.4890982Z             },
2026-06-22T02:23:00.4891067Z             {
2026-06-22T02:23:00.4891177Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4891264Z               "line": 879
2026-06-22T02:23:00.4891353Z             },
2026-06-22T02:23:00.4891430Z             {
2026-06-22T02:23:00.4891540Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4891621Z               "line": 928
2026-06-22T02:23:00.4891710Z             },
2026-06-22T02:23:00.4891790Z             {
2026-06-22T02:23:00.4891906Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4891994Z               "line": 979
2026-06-22T02:23:00.4892075Z             },
2026-06-22T02:23:00.4892156Z             {
2026-06-22T02:23:00.4892257Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4892342Z               "line": 996
2026-06-22T02:23:00.4892422Z             },
2026-06-22T02:23:00.4892499Z             {
2026-06-22T02:23:00.4892609Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4892699Z               "line": 1005
2026-06-22T02:23:00.4892775Z             },
2026-06-22T02:23:00.4892843Z             {
2026-06-22T02:23:00.4892957Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4893057Z               "line": 1016
2026-06-22T02:23:00.4893143Z             },
2026-06-22T02:23:00.4893220Z             {
2026-06-22T02:23:00.4893324Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4893410Z               "line": 1038
2026-06-22T02:23:00.4893492Z             },
2026-06-22T02:23:00.4893572Z             {
2026-06-22T02:23:00.4893682Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4893758Z               "line": 1057
2026-06-22T02:23:00.4893840Z             },
2026-06-22T02:23:00.4893915Z             {
2026-06-22T02:23:00.4894025Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4894098Z               "line": 1107
2026-06-22T02:23:00.4894183Z             },
2026-06-22T02:23:00.4894268Z             {
2026-06-22T02:23:00.4894372Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4894458Z               "line": 1136
2026-06-22T02:23:00.4894542Z             },
2026-06-22T02:23:00.4894622Z             {
2026-06-22T02:23:00.4894732Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4894819Z               "line": 1149
2026-06-22T02:23:00.4894904Z             },
2026-06-22T02:23:00.4894984Z             {
2026-06-22T02:23:00.4895081Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4895166Z               "line": 1215
2026-06-22T02:23:00.4895247Z             },
2026-06-22T02:23:00.4895318Z             {
2026-06-22T02:23:00.4895419Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4895509Z               "line": 1256
2026-06-22T02:23:00.4895595Z             },
2026-06-22T02:23:00.4895667Z             {
2026-06-22T02:23:00.4895777Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4895872Z               "line": 1272
2026-06-22T02:23:00.4895952Z             },
2026-06-22T02:23:00.4896039Z             {
2026-06-22T02:23:00.4896158Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4896320Z               "line": 491
2026-06-22T02:23:00.4896458Z             },
2026-06-22T02:23:00.4896540Z             {
2026-06-22T02:23:00.4896655Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4896745Z               "line": 506
2026-06-22T02:23:00.4896824Z             },
2026-06-22T02:23:00.4896911Z             {
2026-06-22T02:23:00.4897017Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4897107Z               "line": 524
2026-06-22T02:23:00.4897186Z             },
2026-06-22T02:23:00.4897272Z             {
2026-06-22T02:23:00.4897373Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4897454Z               "line": 546
2026-06-22T02:23:00.4897539Z             },
2026-06-22T02:23:00.4897621Z             {
2026-06-22T02:23:00.4897725Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4897806Z               "line": 556
2026-06-22T02:23:00.4897897Z             },
2026-06-22T02:23:00.4897984Z             {
2026-06-22T02:23:00.4898084Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:23:00.4898192Z               "line": 582
2026-06-22T02:23:00.4898270Z             }
2026-06-22T02:23:00.4898351Z           ]
2026-06-22T02:23:00.4898432Z         }
2026-06-22T02:23:00.4898517Z       }
2026-06-22T02:23:00.4898604Z     },
2026-06-22T02:23:00.4898680Z     {
2026-06-22T02:23:00.4898774Z       "id": "REQ-RUN-SHORTCUT",
2026-06-22T02:23:00.4903460Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-22T02:23:00.4903602Z       "requiredStages": [
2026-06-22T02:23:00.4903684Z         "doc",
2026-06-22T02:23:00.4903775Z         "impl",
2026-06-22T02:23:00.4903851Z         "unit"
2026-06-22T02:23:00.4903937Z       ],
2026-06-22T02:23:00.4904018Z       "stages": {
2026-06-22T02:23:00.4904104Z         "doc": {
2026-06-22T02:23:00.4904203Z           "complete": true,
2026-06-22T02:23:00.4904279Z           "evidence": [
2026-06-22T02:23:00.4904362Z             {
2026-06-22T02:23:00.4904461Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.4904547Z               "line": 390
2026-06-22T02:23:00.4904619Z             }
2026-06-22T02:23:00.4904696Z           ]
2026-06-22T02:23:00.4904781Z         },
2026-06-22T02:23:00.4904861Z         "impl": {
2026-06-22T02:23:00.4904956Z           "complete": true,
2026-06-22T02:23:00.4905041Z           "evidence": [
2026-06-22T02:23:00.4905253Z             {
2026-06-22T02:23:00.4905379Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4905544Z               "line": 39
2026-06-22T02:23:00.4905626Z             },
2026-06-22T02:23:00.4905708Z             {
2026-06-22T02:23:00.4905831Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4905907Z               "line": 79
2026-06-22T02:23:00.4905989Z             },
2026-06-22T02:23:00.4906070Z             {
2026-06-22T02:23:00.4906188Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4906280Z               "line": 162
2026-06-22T02:23:00.4906361Z             }
2026-06-22T02:23:00.4906446Z           ]
2026-06-22T02:23:00.4906532Z         },
2026-06-22T02:23:00.4906609Z         "int": {
2026-06-22T02:23:00.4906704Z           "complete": false,
2026-06-22T02:23:00.4906799Z           "evidence": []
2026-06-22T02:23:00.4906875Z         },
2026-06-22T02:23:00.4906962Z         "unit": {
2026-06-22T02:23:00.4907065Z           "complete": true,
2026-06-22T02:23:00.4907156Z           "evidence": [
2026-06-22T02:23:00.4907248Z             {
2026-06-22T02:23:00.4907371Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4907457Z               "line": 206
2026-06-22T02:23:00.4907534Z             },
2026-06-22T02:23:00.4907620Z             {
2026-06-22T02:23:00.4907737Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4907823Z               "line": 222
2026-06-22T02:23:00.4907909Z             },
2026-06-22T02:23:00.4907991Z             {
2026-06-22T02:23:00.4908109Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4908195Z               "line": 238
2026-06-22T02:23:00.4908277Z             },
2026-06-22T02:23:00.4908357Z             {
2026-06-22T02:23:00.4908476Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4908568Z               "line": 251
2026-06-22T02:23:00.4908649Z             },
2026-06-22T02:23:00.4908728Z             {
2026-06-22T02:23:00.4908844Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:23:00.4908934Z               "line": 258
2026-06-22T02:23:00.4909106Z             }
2026-06-22T02:23:00.4909188Z           ]
2026-06-22T02:23:00.4909272Z         }
2026-06-22T02:23:00.4909353Z       }
2026-06-22T02:23:00.4909430Z     },
2026-06-22T02:23:00.4909512Z     {
2026-06-22T02:23:00.4909601Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-22T02:23:00.4909789Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-22T02:23:00.4909902Z       "requiredStages": [
2026-06-22T02:23:00.4909992Z         "impl",
2026-06-22T02:23:00.4910077Z         "unit"
2026-06-22T02:23:00.4910154Z       ],
2026-06-22T02:23:00.4910243Z       "stages": {
2026-06-22T02:23:00.4910323Z         "doc": {
2026-06-22T02:23:00.4910414Z           "complete": false,
2026-06-22T02:23:00.4910495Z           "evidence": []
2026-06-22T02:23:00.4910581Z         },
2026-06-22T02:23:00.4910666Z         "impl": {
2026-06-22T02:23:00.4910757Z           "complete": true,
2026-06-22T02:23:00.4910848Z           "evidence": [
2026-06-22T02:23:00.4910942Z             {
2026-06-22T02:23:00.4911063Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4911144Z               "line": 18
2026-06-22T02:23:00.4911225Z             },
2026-06-22T02:23:00.4911305Z             {
2026-06-22T02:23:00.4911416Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4911501Z               "line": 35
2026-06-22T02:23:00.4911581Z             },
2026-06-22T02:23:00.4911662Z             {
2026-06-22T02:23:00.4911769Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4911859Z               "line": 72
2026-06-22T02:23:00.4911939Z             }
2026-06-22T02:23:00.4912021Z           ]
2026-06-22T02:23:00.4912102Z         },
2026-06-22T02:23:00.4912182Z         "int": {
2026-06-22T02:23:00.4912278Z           "complete": false,
2026-06-22T02:23:00.4912365Z           "evidence": []
2026-06-22T02:23:00.4912554Z         },
2026-06-22T02:23:00.4912637Z         "unit": {
2026-06-22T02:23:00.4912821Z           "complete": true,
2026-06-22T02:23:00.4912915Z           "evidence": [
2026-06-22T02:23:00.4912992Z             {
2026-06-22T02:23:00.4913091Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4913176Z               "line": 239
2026-06-22T02:23:00.4913256Z             },
2026-06-22T02:23:00.4913338Z             {
2026-06-22T02:23:00.4913439Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4913519Z               "line": 256
2026-06-22T02:23:00.4913595Z             },
2026-06-22T02:23:00.4913677Z             {
2026-06-22T02:23:00.4913786Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4913876Z               "line": 265
2026-06-22T02:23:00.4913954Z             }
2026-06-22T02:23:00.4914034Z           ]
2026-06-22T02:23:00.4914110Z         }
2026-06-22T02:23:00.4914182Z       }
2026-06-22T02:23:00.4914278Z     },
2026-06-22T02:23:00.4914358Z     {
2026-06-22T02:23:00.4917130Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-22T02:23:00.4917326Z       "title": "Hostable endpoint-types capability declaration",
2026-06-22T02:23:00.4917431Z       "requiredStages": [
2026-06-22T02:23:00.4917512Z         "impl",
2026-06-22T02:23:00.4917597Z         "unit"
2026-06-22T02:23:00.4917678Z       ],
2026-06-22T02:23:00.4917755Z       "stages": {
2026-06-22T02:23:00.4917837Z         "doc": {
2026-06-22T02:23:00.4917926Z           "complete": false,
2026-06-22T02:23:00.4918008Z           "evidence": []
2026-06-22T02:23:00.4918090Z         },
2026-06-22T02:23:00.4918171Z         "impl": {
2026-06-22T02:23:00.4918264Z           "complete": true,
2026-06-22T02:23:00.4918349Z           "evidence": [
2026-06-22T02:23:00.4918431Z             {
2026-06-22T02:23:00.4918556Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4918645Z               "line": 598
2026-06-22T02:23:00.4918721Z             }
2026-06-22T02:23:00.4918813Z           ]
2026-06-22T02:23:00.4918889Z         },
2026-06-22T02:23:00.4919051Z         "int": {
2026-06-22T02:23:00.4919142Z           "complete": false,
2026-06-22T02:23:00.4919223Z           "evidence": []
2026-06-22T02:23:00.4919298Z         },
2026-06-22T02:23:00.4919390Z         "unit": {
2026-06-22T02:23:00.4919485Z           "complete": true,
2026-06-22T02:23:00.4919571Z           "evidence": [
2026-06-22T02:23:00.4919646Z             {
2026-06-22T02:23:00.4919757Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.4919833Z               "line": 967
2026-06-22T02:23:00.4919914Z             }
2026-06-22T02:23:00.4919995Z           ]
2026-06-22T02:23:00.4920072Z         }
2026-06-22T02:23:00.4920157Z       }
2026-06-22T02:23:00.4920238Z     },
2026-06-22T02:23:00.4920319Z     {
2026-06-22T02:23:00.4920411Z       "id": "REQ-SEAM-HISTORY",
2026-06-22T02:23:00.4920590Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-22T02:23:00.4920694Z       "requiredStages": [
2026-06-22T02:23:00.4920775Z         "impl",
2026-06-22T02:23:00.4920864Z         "unit",
2026-06-22T02:23:00.4920949Z         "int"
2026-06-22T02:23:00.4921031Z       ],
2026-06-22T02:23:00.4921118Z       "stages": {
2026-06-22T02:23:00.4921197Z         "doc": {
2026-06-22T02:23:00.4921279Z           "complete": false,
2026-06-22T02:23:00.4921361Z           "evidence": []
2026-06-22T02:23:00.4921446Z         },
2026-06-22T02:23:00.4921526Z         "impl": {
2026-06-22T02:23:00.4921618Z           "complete": true,
2026-06-22T02:23:00.4921699Z           "evidence": [
2026-06-22T02:23:00.4921775Z             {
2026-06-22T02:23:00.4921894Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:23:00.4921976Z               "line": 24
2026-06-22T02:23:00.4922056Z             },
2026-06-22T02:23:00.4922137Z             {
2026-06-22T02:23:00.4922242Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:23:00.4922329Z               "line": 22
2026-06-22T02:23:00.4922538Z             }
2026-06-22T02:23:00.4922625Z           ]
2026-06-22T02:23:00.4922695Z         },
2026-06-22T02:23:00.4922872Z         "int": {
2026-06-22T02:23:00.4922949Z           "complete": true,
2026-06-22T02:23:00.4923033Z           "evidence": [
2026-06-22T02:23:00.4923114Z             {
2026-06-22T02:23:00.4923226Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.4923307Z               "line": 260
2026-06-22T02:23:00.4923386Z             }
2026-06-22T02:23:00.4923471Z           ]
2026-06-22T02:23:00.4923548Z         },
2026-06-22T02:23:00.4923638Z         "unit": {
2026-06-22T02:23:00.4923726Z           "complete": true,
2026-06-22T02:23:00.4923807Z           "evidence": [
2026-06-22T02:23:00.4923889Z             {
2026-06-22T02:23:00.4923990Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:23:00.4924074Z               "line": 171
2026-06-22T02:23:00.4924150Z             },
2026-06-22T02:23:00.4924223Z             {
2026-06-22T02:23:00.4924328Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:23:00.4924417Z               "line": 200
2026-06-22T02:23:00.4924509Z             },
2026-06-22T02:23:00.4924590Z             {
2026-06-22T02:23:00.4924694Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:23:00.4924780Z               "line": 220
2026-06-22T02:23:00.4924862Z             },
2026-06-22T02:23:00.4924942Z             {
2026-06-22T02:23:00.4925047Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:23:00.4925134Z               "line": 199
2026-06-22T02:23:00.4925215Z             },
2026-06-22T02:23:00.4925290Z             {
2026-06-22T02:23:00.4925396Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:23:00.4925473Z               "line": 219
2026-06-22T02:23:00.4925548Z             },
2026-06-22T02:23:00.4925633Z             {
2026-06-22T02:23:00.4925739Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:23:00.4925816Z               "line": 244
2026-06-22T02:23:00.4925905Z             },
2026-06-22T02:23:00.4925971Z             {
2026-06-22T02:23:00.4926086Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:23:00.4926162Z               "line": 276
2026-06-22T02:23:00.4926246Z             },
2026-06-22T02:23:00.4926331Z             {
2026-06-22T02:23:00.4926436Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:23:00.4926528Z               "line": 297
2026-06-22T02:23:00.4926603Z             },
2026-06-22T02:23:00.4926688Z             {
2026-06-22T02:23:00.4926794Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:23:00.4926880Z               "line": 324
2026-06-22T02:23:00.4926965Z             }
2026-06-22T02:23:00.4927037Z           ]
2026-06-22T02:23:00.4927119Z         }
2026-06-22T02:23:00.4927204Z       }
2026-06-22T02:23:00.4927285Z     },
2026-06-22T02:23:00.4927366Z     {
2026-06-22T02:23:00.4927457Z       "id": "REQ-SEAM-INJECT",
2026-06-22T02:23:00.4927619Z       "title": "inject-input methods configurable per activity-state",
2026-06-22T02:23:00.4927715Z       "requiredStages": [
2026-06-22T02:23:00.4927795Z         "impl",
2026-06-22T02:23:00.4927876Z         "unit"
2026-06-22T02:23:00.4927952Z       ],
2026-06-22T02:23:00.4928040Z       "stages": {
2026-06-22T02:23:00.4928119Z         "doc": {
2026-06-22T02:23:00.4928210Z           "complete": false,
2026-06-22T02:23:00.4928286Z           "evidence": []
2026-06-22T02:23:00.4928369Z         },
2026-06-22T02:23:00.4928453Z         "impl": {
2026-06-22T02:23:00.4928539Z           "complete": true,
2026-06-22T02:23:00.4928621Z           "evidence": [
2026-06-22T02:23:00.4928703Z             {
2026-06-22T02:23:00.4928824Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4928909Z               "line": 19
2026-06-22T02:23:00.4929078Z             },
2026-06-22T02:23:00.4929158Z             {
2026-06-22T02:23:00.4929267Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4929482Z               "line": 111
2026-06-22T02:23:00.4929562Z             }
2026-06-22T02:23:00.4929645Z           ]
2026-06-22T02:23:00.4929835Z         },
2026-06-22T02:23:00.4929921Z         "int": {
2026-06-22T02:23:00.4930007Z           "complete": false,
2026-06-22T02:23:00.4930092Z           "evidence": []
2026-06-22T02:23:00.4930173Z         },
2026-06-22T02:23:00.4930255Z         "unit": {
2026-06-22T02:23:00.4930336Z           "complete": true,
2026-06-22T02:23:00.4930416Z           "evidence": [
2026-06-22T02:23:00.4930493Z             {
2026-06-22T02:23:00.4930599Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4930689Z               "line": 345
2026-06-22T02:23:00.4930764Z             },
2026-06-22T02:23:00.4930846Z             {
2026-06-22T02:23:00.4930961Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.4931046Z               "line": 365
2026-06-22T02:23:00.4931126Z             }
2026-06-22T02:23:00.4931207Z           ]
2026-06-22T02:23:00.4931302Z         }
2026-06-22T02:23:00.4931377Z       }
2026-06-22T02:23:00.4931453Z     },
2026-06-22T02:23:00.4931524Z     {
2026-06-22T02:23:00.4931630Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-22T02:23:00.4931757Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-22T02:23:00.4931848Z       "requiredStages": [
2026-06-22T02:23:00.4931931Z         "impl",
2026-06-22T02:23:00.4932016Z         "unit"
2026-06-22T02:23:00.4932096Z       ],
2026-06-22T02:23:00.4932183Z       "stages": {
2026-06-22T02:23:00.4932264Z         "doc": {
2026-06-22T02:23:00.4932345Z           "complete": false,
2026-06-22T02:23:00.4932425Z           "evidence": []
2026-06-22T02:23:00.4932508Z         },
2026-06-22T02:23:00.4932583Z         "impl": {
2026-06-22T02:23:00.4932674Z           "complete": true,
2026-06-22T02:23:00.4932764Z           "evidence": [
2026-06-22T02:23:00.4932841Z             {
2026-06-22T02:23:00.4932955Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4933031Z               "line": 18
2026-06-22T02:23:00.4933122Z             },
2026-06-22T02:23:00.4933204Z             {
2026-06-22T02:23:00.4933317Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4933393Z               "line": 431
2026-06-22T02:23:00.4933471Z             }
2026-06-22T02:23:00.4933552Z           ]
2026-06-22T02:23:00.4933636Z         },
2026-06-22T02:23:00.4933718Z         "int": {
2026-06-22T02:23:00.4933795Z           "complete": false,
2026-06-22T02:23:00.4933881Z           "evidence": []
2026-06-22T02:23:00.4933964Z         },
2026-06-22T02:23:00.4934036Z         "unit": {
2026-06-22T02:23:00.4934122Z           "complete": true,
2026-06-22T02:23:00.4934207Z           "evidence": [
2026-06-22T02:23:00.4934282Z             {
2026-06-22T02:23:00.4934391Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4934468Z               "line": 881
2026-06-22T02:23:00.4934550Z             },
2026-06-22T02:23:00.4934629Z             {
2026-06-22T02:23:00.4934730Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4934812Z               "line": 891
2026-06-22T02:23:00.4934902Z             }
2026-06-22T02:23:00.4934982Z           ]
2026-06-22T02:23:00.4935055Z         }
2026-06-22T02:23:00.4935136Z       }
2026-06-22T02:23:00.4935208Z     },
2026-06-22T02:23:00.4935278Z     {
2026-06-22T02:23:00.4935374Z       "id": "REQ-SEAM-PSYCHE",
2026-06-22T02:23:00.4935507Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-22T02:23:00.4935602Z       "requiredStages": [
2026-06-22T02:23:00.4935674Z         "impl",
2026-06-22T02:23:00.4935756Z         "unit",
2026-06-22T02:23:00.4935831Z         "int"
2026-06-22T02:23:00.4935907Z       ],
2026-06-22T02:23:00.4935989Z       "stages": {
2026-06-22T02:23:00.4936071Z         "doc": {
2026-06-22T02:23:00.4936155Z           "complete": false,
2026-06-22T02:23:00.4936241Z           "evidence": []
2026-06-22T02:23:00.4936329Z         },
2026-06-22T02:23:00.4936410Z         "impl": {
2026-06-22T02:23:00.4936588Z           "complete": true,
2026-06-22T02:23:00.4936669Z           "evidence": [
2026-06-22T02:23:00.4936760Z             {
2026-06-22T02:23:00.4936938Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:23:00.4937020Z               "line": 19
2026-06-22T02:23:00.4937102Z             },
2026-06-22T02:23:00.4937187Z             {
2026-06-22T02:23:00.4937292Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T02:23:00.4937369Z               "line": 12
2026-06-22T02:23:00.4937454Z             },
2026-06-22T02:23:00.4937535Z             {
2026-06-22T02:23:00.4937631Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.4937721Z               "line": 301
2026-06-22T02:23:00.4937802Z             }
2026-06-22T02:23:00.4937883Z           ]
2026-06-22T02:23:00.4937956Z         },
2026-06-22T02:23:00.4938041Z         "int": {
2026-06-22T02:23:00.4938131Z           "complete": true,
2026-06-22T02:23:00.4938212Z           "evidence": [
2026-06-22T02:23:00.4938309Z             {
2026-06-22T02:23:00.4938413Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.4938503Z               "line": 259
2026-06-22T02:23:00.4938585Z             }
2026-06-22T02:23:00.4938666Z           ]
2026-06-22T02:23:00.4938751Z         },
2026-06-22T02:23:00.4938832Z         "unit": {
2026-06-22T02:23:00.4938909Z           "complete": true,
2026-06-22T02:23:00.4939060Z           "evidence": [
2026-06-22T02:23:00.4939142Z             {
2026-06-22T02:23:00.4939239Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:23:00.4939328Z               "line": 195
2026-06-22T02:23:00.4939418Z             },
2026-06-22T02:23:00.4939503Z             {
2026-06-22T02:23:00.4939614Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:23:00.4939694Z               "line": 202
2026-06-22T02:23:00.4939775Z             },
2026-06-22T02:23:00.4939856Z             {
2026-06-22T02:23:00.4939966Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:23:00.4940056Z               "line": 225
2026-06-22T02:23:00.4940137Z             },
2026-06-22T02:23:00.4940220Z             {
2026-06-22T02:23:00.4940324Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:23:00.4940400Z               "line": 106
2026-06-22T02:23:00.4940481Z             },
2026-06-22T02:23:00.4940562Z             {
2026-06-22T02:23:00.4940667Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:23:00.4940748Z               "line": 137
2026-06-22T02:23:00.4940820Z             },
2026-06-22T02:23:00.4940891Z             {
2026-06-22T02:23:00.4940996Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:23:00.4941081Z               "line": 161
2026-06-22T02:23:00.4941159Z             }
2026-06-22T02:23:00.4941235Z           ]
2026-06-22T02:23:00.4941315Z         }
2026-06-22T02:23:00.4941396Z       }
2026-06-22T02:23:00.4941474Z     },
2026-06-22T02:23:00.4941559Z     {
2026-06-22T02:23:00.4941644Z       "id": "REQ-SEAM-RESUME",
2026-06-22T02:23:00.4941829Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-22T02:23:00.4941918Z       "requiredStages": [
2026-06-22T02:23:00.4941989Z         "impl",
2026-06-22T02:23:00.4942079Z         "unit"
2026-06-22T02:23:00.4942156Z       ],
2026-06-22T02:23:00.4942243Z       "stages": {
2026-06-22T02:23:00.4942313Z         "doc": {
2026-06-22T02:23:00.4942399Z           "complete": false,
2026-06-22T02:23:00.4942486Z           "evidence": []
2026-06-22T02:23:00.4942566Z         },
2026-06-22T02:23:00.4942642Z         "impl": {
2026-06-22T02:23:00.4942728Z           "complete": true,
2026-06-22T02:23:00.4942820Z           "evidence": [
2026-06-22T02:23:00.4942900Z             {
2026-06-22T02:23:00.4943009Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.4943091Z               "line": 19
2026-06-22T02:23:00.4943163Z             }
2026-06-22T02:23:00.4943243Z           ]
2026-06-22T02:23:00.4943329Z         },
2026-06-22T02:23:00.4943524Z         "int": {
2026-06-22T02:23:00.4943601Z           "complete": false,
2026-06-22T02:23:00.4943682Z           "evidence": []
2026-06-22T02:23:00.4943853Z         },
2026-06-22T02:23:00.4943925Z         "unit": {
2026-06-22T02:23:00.4944017Z           "complete": true,
2026-06-22T02:23:00.4944098Z           "evidence": [
2026-06-22T02:23:00.4944182Z             {
2026-06-22T02:23:00.4944288Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.4944374Z               "line": 201
2026-06-22T02:23:00.4944459Z             },
2026-06-22T02:23:00.4944534Z             {
2026-06-22T02:23:00.4944634Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.4944716Z               "line": 223
2026-06-22T02:23:00.4944795Z             },
2026-06-22T02:23:00.4944875Z             {
2026-06-22T02:23:00.4944976Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:23:00.4945062Z               "line": 244
2026-06-22T02:23:00.4945138Z             }
2026-06-22T02:23:00.4945228Z           ]
2026-06-22T02:23:00.4945305Z         }
2026-06-22T02:23:00.4945391Z       }
2026-06-22T02:23:00.4945472Z     },
2026-06-22T02:23:00.4945557Z     {
2026-06-22T02:23:00.4945658Z       "id": "REQ-SEAM-SPAWN",
2026-06-22T02:23:00.4945753Z       "title": "spawn-session seam",
2026-06-22T02:23:00.4945847Z       "requiredStages": [
2026-06-22T02:23:00.4945929Z         "impl",
2026-06-22T02:23:00.4946011Z         "unit"
2026-06-22T02:23:00.4946091Z       ],
2026-06-22T02:23:00.4946172Z       "stages": {
2026-06-22T02:23:00.4946259Z         "doc": {
2026-06-22T02:23:00.4946345Z           "complete": false,
2026-06-22T02:23:00.4946429Z           "evidence": []
2026-06-22T02:23:00.4946501Z         },
2026-06-22T02:23:00.4946584Z         "impl": {
2026-06-22T02:23:00.4946665Z           "complete": true,
2026-06-22T02:23:00.4946744Z           "evidence": [
2026-06-22T02:23:00.4946825Z             {
2026-06-22T02:23:00.4946946Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4947026Z               "line": 20
2026-06-22T02:23:00.4947101Z             }
2026-06-22T02:23:00.4947186Z           ]
2026-06-22T02:23:00.4947273Z         },
2026-06-22T02:23:00.4947357Z         "int": {
2026-06-22T02:23:00.4947451Z           "complete": false,
2026-06-22T02:23:00.4947533Z           "evidence": []
2026-06-22T02:23:00.4947619Z         },
2026-06-22T02:23:00.4947691Z         "unit": {
2026-06-22T02:23:00.4947780Z           "complete": true,
2026-06-22T02:23:00.4947862Z           "evidence": [
2026-06-22T02:23:00.4947943Z             {
2026-06-22T02:23:00.4948047Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4948128Z               "line": 608
2026-06-22T02:23:00.4948211Z             },
2026-06-22T02:23:00.4948291Z             {
2026-06-22T02:23:00.4948395Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4948472Z               "line": 615
2026-06-22T02:23:00.4948549Z             },
2026-06-22T02:23:00.4948629Z             {
2026-06-22T02:23:00.4948748Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4948830Z               "line": 721
2026-06-22T02:23:00.4948916Z             },
2026-06-22T02:23:00.4949078Z             {
2026-06-22T02:23:00.4949188Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4949282Z               "line": 727
2026-06-22T02:23:00.4949368Z             },
2026-06-22T02:23:00.4949441Z             {
2026-06-22T02:23:00.4949555Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4949640Z               "line": 752
2026-06-22T02:23:00.4949712Z             },
2026-06-22T02:23:00.4949794Z             {
2026-06-22T02:23:00.4949907Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:23:00.4949987Z               "line": 789
2026-06-22T02:23:00.4950068Z             }
2026-06-22T02:23:00.4950155Z           ]
2026-06-22T02:23:00.4950236Z         }
2026-06-22T02:23:00.4950316Z       }
2026-06-22T02:23:00.4950402Z     },
2026-06-22T02:23:00.4950593Z     {
2026-06-22T02:23:00.4950692Z       "id": "REQ-SEAM-UPDATE",
2026-06-22T02:23:00.4950846Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-22T02:23:00.4951032Z       "requiredStages": [
2026-06-22T02:23:00.4951114Z         "impl",
2026-06-22T02:23:00.4951198Z         "unit"
2026-06-22T02:23:00.4951279Z       ],
2026-06-22T02:23:00.4951361Z       "stages": {
2026-06-22T02:23:00.4951442Z         "doc": {
2026-06-22T02:23:00.4951523Z           "complete": false,
2026-06-22T02:23:00.4951608Z           "evidence": []
2026-06-22T02:23:00.4951690Z         },
2026-06-22T02:23:00.4951771Z         "impl": {
2026-06-22T02:23:00.4951851Z           "complete": true,
2026-06-22T02:23:00.4951933Z           "evidence": [
2026-06-22T02:23:00.4952010Z             {
2026-06-22T02:23:00.4952142Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.4952232Z               "line": 28
2026-06-22T02:23:00.4952313Z             },
2026-06-22T02:23:00.4952408Z             {
2026-06-22T02:23:00.4952530Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.4952620Z               "line": 88
2026-06-22T02:23:00.4952698Z             }
2026-06-22T02:23:00.4952769Z           ]
2026-06-22T02:23:00.4952855Z         },
2026-06-22T02:23:00.4952940Z         "int": {
2026-06-22T02:23:00.4953031Z           "complete": false,
2026-06-22T02:23:00.4953117Z           "evidence": []
2026-06-22T02:23:00.4953202Z         },
2026-06-22T02:23:00.4953288Z         "unit": {
2026-06-22T02:23:00.4953384Z           "complete": true,
2026-06-22T02:23:00.4953469Z           "evidence": [
2026-06-22T02:23:00.4953550Z             {
2026-06-22T02:23:00.4953675Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.4953765Z               "line": 326
2026-06-22T02:23:00.4953856Z             },
2026-06-22T02:23:00.4953932Z             {
2026-06-22T02:23:00.4954056Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.4954142Z               "line": 337
2026-06-22T02:23:00.4954228Z             }
2026-06-22T02:23:00.4954314Z           ]
2026-06-22T02:23:00.4954399Z         }
2026-06-22T02:23:00.4954485Z       }
2026-06-22T02:23:00.4954562Z     },
2026-06-22T02:23:00.4954643Z     {
2026-06-22T02:23:00.4954738Z       "id": "REQ-SEC-1",
2026-06-22T02:23:00.4955113Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-22T02:23:00.4955213Z       "requiredStages": [
2026-06-22T02:23:00.4955299Z         "impl",
2026-06-22T02:23:00.4955369Z         "unit"
2026-06-22T02:23:00.4955454Z       ],
2026-06-22T02:23:00.4955536Z       "stages": {
2026-06-22T02:23:00.4955622Z         "doc": {
2026-06-22T02:23:00.4955707Z           "complete": false,
2026-06-22T02:23:00.4955797Z           "evidence": []
2026-06-22T02:23:00.4955880Z         },
2026-06-22T02:23:00.4955961Z         "impl": {
2026-06-22T02:23:00.4956060Z           "complete": true,
2026-06-22T02:23:00.4956146Z           "evidence": [
2026-06-22T02:23:00.4956228Z             {
2026-06-22T02:23:00.4956356Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:23:00.4956446Z               "line": 86
2026-06-22T02:23:00.4956528Z             },
2026-06-22T02:23:00.4956609Z             {
2026-06-22T02:23:00.4956718Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:23:00.4956804Z               "line": 116
2026-06-22T02:23:00.4956881Z             },
2026-06-22T02:23:00.4956961Z             {
2026-06-22T02:23:00.4957076Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:23:00.4957163Z               "line": 130
2026-06-22T02:23:00.4957243Z             },
2026-06-22T02:23:00.4957318Z             {
2026-06-22T02:23:00.4957429Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4957520Z               "line": 109
2026-06-22T02:23:00.4957596Z             },
2026-06-22T02:23:00.4957761Z             {
2026-06-22T02:23:00.4957871Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4958026Z               "line": 130
2026-06-22T02:23:00.4958107Z             },
2026-06-22T02:23:00.4958189Z             {
2026-06-22T02:23:00.4958297Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4958388Z               "line": 143
2026-06-22T02:23:00.4958470Z             },
2026-06-22T02:23:00.4958556Z             {
2026-06-22T02:23:00.4958660Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4958751Z               "line": 209
2026-06-22T02:23:00.4958832Z             },
2026-06-22T02:23:00.4958913Z             {
2026-06-22T02:23:00.4959090Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4959180Z               "line": 235
2026-06-22T02:23:00.4959265Z             },
2026-06-22T02:23:00.4959337Z             {
2026-06-22T02:23:00.4959457Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4959552Z               "line": 5295
2026-06-22T02:23:00.4959633Z             }
2026-06-22T02:23:00.4959710Z           ]
2026-06-22T02:23:00.4959791Z         },
2026-06-22T02:23:00.4959871Z         "int": {
2026-06-22T02:23:00.4959952Z           "complete": false,
2026-06-22T02:23:00.4960044Z           "evidence": []
2026-06-22T02:23:00.4960125Z         },
2026-06-22T02:23:00.4960205Z         "unit": {
2026-06-22T02:23:00.4960287Z           "complete": true,
2026-06-22T02:23:00.4960378Z           "evidence": [
2026-06-22T02:23:00.4960458Z             {
2026-06-22T02:23:00.4960576Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:23:00.4960662Z               "line": 142
2026-06-22T02:23:00.4960739Z             },
2026-06-22T02:23:00.4960819Z             {
2026-06-22T02:23:00.4960928Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:23:00.4961015Z               "line": 194
2026-06-22T02:23:00.4961096Z             },
2026-06-22T02:23:00.4961176Z             {
2026-06-22T02:23:00.4961296Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:23:00.4961387Z               "line": 235
2026-06-22T02:23:00.4961472Z             },
2026-06-22T02:23:00.4961548Z             {
2026-06-22T02:23:00.4961669Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-22T02:23:00.4961763Z               "line": 140
2026-06-22T02:23:00.4961844Z             },
2026-06-22T02:23:00.4961926Z             {
2026-06-22T02:23:00.4962035Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4962130Z               "line": 247
2026-06-22T02:23:00.4962211Z             },
2026-06-22T02:23:00.4962289Z             {
2026-06-22T02:23:00.4962402Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4962488Z               "line": 277
2026-06-22T02:23:00.4962570Z             },
2026-06-22T02:23:00.4962651Z             {
2026-06-22T02:23:00.4962759Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4962840Z               "line": 310
2026-06-22T02:23:00.4962926Z             },
2026-06-22T02:23:00.4963010Z             {
2026-06-22T02:23:00.4963119Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4963200Z               "line": 329
2026-06-22T02:23:00.4963286Z             },
2026-06-22T02:23:00.4963367Z             {
2026-06-22T02:23:00.4963471Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4963558Z               "line": 362
2026-06-22T02:23:00.4963635Z             },
2026-06-22T02:23:00.4963715Z             {
2026-06-22T02:23:00.4963814Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:23:00.4963897Z               "line": 386
2026-06-22T02:23:00.4963987Z             },
2026-06-22T02:23:00.4964067Z             {
2026-06-22T02:23:00.4964173Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4964273Z               "line": 8296
2026-06-22T02:23:00.4964354Z             }
2026-06-22T02:23:00.4964439Z           ]
2026-06-22T02:23:00.4964626Z         }
2026-06-22T02:23:00.4964711Z       }
2026-06-22T02:23:00.4964798Z     },
2026-06-22T02:23:00.4964875Z     {
2026-06-22T02:23:00.4965069Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-22T02:23:00.4968725Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-22T02:23:00.4968849Z       "requiredStages": [
2026-06-22T02:23:00.4969035Z         "impl",
2026-06-22T02:23:00.4969121Z         "unit",
2026-06-22T02:23:00.4969196Z         "int"
2026-06-22T02:23:00.4969272Z       ],
2026-06-22T02:23:00.4969355Z       "stages": {
2026-06-22T02:23:00.4969459Z         "doc": {
2026-06-22T02:23:00.4969544Z           "complete": false,
2026-06-22T02:23:00.4969627Z           "evidence": []
2026-06-22T02:23:00.4969712Z         },
2026-06-22T02:23:00.4969798Z         "impl": {
2026-06-22T02:23:00.4969893Z           "complete": true,
2026-06-22T02:23:00.4969984Z           "evidence": [
2026-06-22T02:23:00.4970069Z             {
2026-06-22T02:23:00.4970193Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.4970284Z               "line": 1160
2026-06-22T02:23:00.4970365Z             },
2026-06-22T02:23:00.4970446Z             {
2026-06-22T02:23:00.4970571Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.4970652Z               "line": 1775
2026-06-22T02:23:00.4970731Z             },
2026-06-22T02:23:00.4970817Z             {
2026-06-22T02:23:00.4970919Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4971009Z               "line": 2850
2026-06-22T02:23:00.4971088Z             }
2026-06-22T02:23:00.4971174Z           ]
2026-06-22T02:23:00.4971251Z         },
2026-06-22T02:23:00.4971333Z         "int": {
2026-06-22T02:23:00.4971426Z           "complete": true,
2026-06-22T02:23:00.4971517Z           "evidence": [
2026-06-22T02:23:00.4971604Z             {
2026-06-22T02:23:00.4971718Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.4971813Z               "line": 189
2026-06-22T02:23:00.4971900Z             },
2026-06-22T02:23:00.4971980Z             {
2026-06-22T02:23:00.4972094Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:23:00.4972186Z               "line": 524
2026-06-22T02:23:00.4972271Z             }
2026-06-22T02:23:00.4972357Z           ]
2026-06-22T02:23:00.4972438Z         },
2026-06-22T02:23:00.4972524Z         "unit": {
2026-06-22T02:23:00.4972614Z           "complete": true,
2026-06-22T02:23:00.4972695Z           "evidence": [
2026-06-22T02:23:00.4972781Z             {
2026-06-22T02:23:00.4972892Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.4972971Z               "line": 980
2026-06-22T02:23:00.4973057Z             },
2026-06-22T02:23:00.4973135Z             {
2026-06-22T02:23:00.4973244Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.4973438Z               "line": 7486
2026-06-22T02:23:00.4973529Z             }
2026-06-22T02:23:00.4973612Z           ]
2026-06-22T02:23:00.4973784Z         }
2026-06-22T02:23:00.4973875Z       }
2026-06-22T02:23:00.4973960Z     },
2026-06-22T02:23:00.4974045Z     {
2026-06-22T02:23:00.4974152Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-22T02:23:00.4980949Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-22T02:23:00.4981082Z       "requiredStages": [
2026-06-22T02:23:00.4981160Z         "doc",
2026-06-22T02:23:00.4981245Z         "impl",
2026-06-22T02:23:00.4981325Z         "unit",
2026-06-22T02:23:00.4981407Z         "int"
2026-06-22T02:23:00.4981489Z       ],
2026-06-22T02:23:00.4981569Z       "stages": {
2026-06-22T02:23:00.4981648Z         "doc": {
2026-06-22T02:23:00.4981743Z           "complete": true,
2026-06-22T02:23:00.4981835Z           "evidence": [
2026-06-22T02:23:00.4981917Z             {
2026-06-22T02:23:00.4982054Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T02:23:00.4982145Z               "line": 130
2026-06-22T02:23:00.4982231Z             },
2026-06-22T02:23:00.4982311Z             {
2026-06-22T02:23:00.4982412Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.4982498Z               "line": 96
2026-06-22T02:23:00.4982575Z             }
2026-06-22T02:23:00.4982659Z           ]
2026-06-22T02:23:00.4982741Z         },
2026-06-22T02:23:00.4982822Z         "impl": {
2026-06-22T02:23:00.4982903Z           "complete": true,
2026-06-22T02:23:00.4982983Z           "evidence": [
2026-06-22T02:23:00.4983066Z             {
2026-06-22T02:23:00.4983198Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4983279Z               "line": 77
2026-06-22T02:23:00.4983356Z             },
2026-06-22T02:23:00.4983443Z             {
2026-06-22T02:23:00.4983560Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4983753Z               "line": 183
2026-06-22T02:23:00.4983917Z             },
2026-06-22T02:23:00.4984003Z             {
2026-06-22T02:23:00.4984126Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4984215Z               "line": 222
2026-06-22T02:23:00.4984291Z             },
2026-06-22T02:23:00.4984368Z             {
2026-06-22T02:23:00.4984483Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.4984563Z               "line": 71
2026-06-22T02:23:00.4984649Z             },
2026-06-22T02:23:00.4984722Z             {
2026-06-22T02:23:00.4984831Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4984911Z               "line": 176
2026-06-22T02:23:00.4984983Z             }
2026-06-22T02:23:00.4985069Z           ]
2026-06-22T02:23:00.4985141Z         },
2026-06-22T02:23:00.4985226Z         "int": {
2026-06-22T02:23:00.4985318Z           "complete": true,
2026-06-22T02:23:00.4985403Z           "evidence": [
2026-06-22T02:23:00.4985484Z             {
2026-06-22T02:23:00.4985608Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-22T02:23:00.4985694Z               "line": 25
2026-06-22T02:23:00.4985765Z             }
2026-06-22T02:23:00.4985851Z           ]
2026-06-22T02:23:00.4985933Z         },
2026-06-22T02:23:00.4986019Z         "unit": {
2026-06-22T02:23:00.4986113Z           "complete": true,
2026-06-22T02:23:00.4986199Z           "evidence": [
2026-06-22T02:23:00.4986281Z             {
2026-06-22T02:23:00.4986394Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4986485Z               "line": 341
2026-06-22T02:23:00.4986567Z             },
2026-06-22T02:23:00.4986644Z             {
2026-06-22T02:23:00.4986765Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:23:00.4986850Z               "line": 391
2026-06-22T02:23:00.4989807Z             },
2026-06-22T02:23:00.4989912Z             {
2026-06-22T02:23:00.4990074Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.4990179Z               "line": 1244
2026-06-22T02:23:00.4990260Z             },
2026-06-22T02:23:00.4990340Z             {
2026-06-22T02:23:00.4990465Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.4990551Z               "line": 184
2026-06-22T02:23:00.4990631Z             },
2026-06-22T02:23:00.4990708Z             {
2026-06-22T02:23:00.4990837Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.4990923Z               "line": 208
2026-06-22T02:23:00.4991008Z             },
2026-06-22T02:23:00.4991086Z             {
2026-06-22T02:23:00.4991194Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.4991270Z               "line": 236
2026-06-22T02:23:00.4991357Z             },
2026-06-22T02:23:00.4991443Z             {
2026-06-22T02:23:00.4991551Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:23:00.4991647Z               "line": 945
2026-06-22T02:23:00.4991725Z             }
2026-06-22T02:23:00.4991809Z           ]
2026-06-22T02:23:00.4991895Z         }
2026-06-22T02:23:00.4991967Z       }
2026-06-22T02:23:00.4992054Z     },
2026-06-22T02:23:00.4992129Z     {
2026-06-22T02:23:00.4992227Z       "id": "REQ-SHELL-1",
2026-06-22T02:23:00.4993077Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-22T02:23:00.4993163Z       "requiredStages": [
2026-06-22T02:23:00.4993243Z         "impl",
2026-06-22T02:23:00.4993325Z         "unit",
2026-06-22T02:23:00.4993416Z         "int"
2026-06-22T02:23:00.4993492Z       ],
2026-06-22T02:23:00.4993572Z       "stages": {
2026-06-22T02:23:00.4993645Z         "doc": {
2026-06-22T02:23:00.4993868Z           "complete": false,
2026-06-22T02:23:00.4993960Z           "evidence": []
2026-06-22T02:23:00.4994130Z         },
2026-06-22T02:23:00.4994221Z         "impl": {
2026-06-22T02:23:00.4994308Z           "complete": true,
2026-06-22T02:23:00.4994397Z           "evidence": [
2026-06-22T02:23:00.4994477Z             {
2026-06-22T02:23:00.4994606Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.4994691Z               "line": 189
2026-06-22T02:23:00.4994775Z             },
2026-06-22T02:23:00.4994856Z             {
2026-06-22T02:23:00.4994962Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.4995044Z               "line": 268
2026-06-22T02:23:00.4995128Z             },
2026-06-22T02:23:00.4995195Z             {
2026-06-22T02:23:00.4995315Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.4995400Z               "line": 27
2026-06-22T02:23:00.4995481Z             },
2026-06-22T02:23:00.4995568Z             {
2026-06-22T02:23:00.4995687Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.4995776Z               "line": 52
2026-06-22T02:23:00.4995863Z             },
2026-06-22T02:23:00.4995935Z             {
2026-06-22T02:23:00.4996053Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.4996134Z               "line": 144
2026-06-22T02:23:00.4996221Z             },
2026-06-22T02:23:00.4996292Z             {
2026-06-22T02:23:00.4996415Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.4996498Z               "line": 176
2026-06-22T02:23:00.4996579Z             },
2026-06-22T02:23:00.4996658Z             {
2026-06-22T02:23:00.4996774Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4996856Z               "line": 22
2026-06-22T02:23:00.4996931Z             },
2026-06-22T02:23:00.4997012Z             {
2026-06-22T02:23:00.4997118Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4997214Z               "line": 65
2026-06-22T02:23:00.4997292Z             },
2026-06-22T02:23:00.4997383Z             {
2026-06-22T02:23:00.4997497Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4997577Z               "line": 76
2026-06-22T02:23:00.4997657Z             },
2026-06-22T02:23:00.4997732Z             {
2026-06-22T02:23:00.4997853Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4997929Z               "line": 151
2026-06-22T02:23:00.4998009Z             },
2026-06-22T02:23:00.4998086Z             {
2026-06-22T02:23:00.4998201Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4998281Z               "line": 210
2026-06-22T02:23:00.4998353Z             },
2026-06-22T02:23:00.4998435Z             {
2026-06-22T02:23:00.4998544Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4998629Z               "line": 259
2026-06-22T02:23:00.4998706Z             },
2026-06-22T02:23:00.4998788Z             {
2026-06-22T02:23:00.4998897Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4999079Z               "line": 281
2026-06-22T02:23:00.4999159Z             },
2026-06-22T02:23:00.4999240Z             {
2026-06-22T02:23:00.4999350Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.4999441Z               "line": 294
2026-06-22T02:23:00.4999530Z             },
2026-06-22T02:23:00.4999612Z             {
2026-06-22T02:23:00.4999728Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.4999808Z               "line": 217
2026-06-22T02:23:00.4999878Z             },
2026-06-22T02:23:00.4999963Z             {
2026-06-22T02:23:00.5000069Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.5000148Z               "line": 233
2026-06-22T02:23:00.5000233Z             },
2026-06-22T02:23:00.5000314Z             {
2026-06-22T02:23:00.5000429Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.5000619Z               "line": 41
2026-06-22T02:23:00.5000701Z             },
2026-06-22T02:23:00.5000872Z             {
2026-06-22T02:23:00.5000987Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.5001077Z               "line": 222
2026-06-22T02:23:00.5001153Z             },
2026-06-22T02:23:00.5001234Z             {
2026-06-22T02:23:00.5001350Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:23:00.5001435Z               "line": 173
2026-06-22T02:23:00.5001515Z             },
2026-06-22T02:23:00.5001597Z             {
2026-06-22T02:23:00.5001702Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.5001788Z               "line": 354
2026-06-22T02:23:00.5001873Z             },
2026-06-22T02:23:00.5001946Z             {
2026-06-22T02:23:00.5002054Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.5002141Z               "line": 419
2026-06-22T02:23:00.5002222Z             },
2026-06-22T02:23:00.5002309Z             {
2026-06-22T02:23:00.5002412Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5002503Z               "line": 333
2026-06-22T02:23:00.5002580Z             },
2026-06-22T02:23:00.5002656Z             {
2026-06-22T02:23:00.5002750Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5002840Z               "line": 6320
2026-06-22T02:23:00.5002922Z             },
2026-06-22T02:23:00.5002989Z             {
2026-06-22T02:23:00.5003093Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5003174Z               "line": 6470
2026-06-22T02:23:00.5003256Z             },
2026-06-22T02:23:00.5003341Z             {
2026-06-22T02:23:00.5003436Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5003517Z               "line": 6646
2026-06-22T02:23:00.5003599Z             }
2026-06-22T02:23:00.5003675Z           ]
2026-06-22T02:23:00.5003746Z         },
2026-06-22T02:23:00.5003832Z         "int": {
2026-06-22T02:23:00.5003937Z           "complete": true,
2026-06-22T02:23:00.5004018Z           "evidence": [
2026-06-22T02:23:00.5004108Z             {
2026-06-22T02:23:00.5004229Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.5004319Z               "line": 713
2026-06-22T02:23:00.5004400Z             },
2026-06-22T02:23:00.5004486Z             {
2026-06-22T02:23:00.5004610Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:23:00.5004680Z               "line": 8
2026-06-22T02:23:00.5004767Z             },
2026-06-22T02:23:00.5004844Z             {
2026-06-22T02:23:00.5004972Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:23:00.5005047Z               "line": 49
2026-06-22T02:23:00.5005128Z             },
2026-06-22T02:23:00.5005209Z             {
2026-06-22T02:23:00.5005317Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5005402Z               "line": 778
2026-06-22T02:23:00.5005479Z             },
2026-06-22T02:23:00.5005555Z             {
2026-06-22T02:23:00.5005669Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5005755Z               "line": 1213
2026-06-22T02:23:00.5005837Z             },
2026-06-22T02:23:00.5005918Z             {
2026-06-22T02:23:00.5006036Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:23:00.5006123Z               "line": 17
2026-06-22T02:23:00.5006208Z             },
2026-06-22T02:23:00.5006289Z             {
2026-06-22T02:23:00.5006394Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:23:00.5006471Z               "line": 14
2026-06-22T02:23:00.5006542Z             }
2026-06-22T02:23:00.5006623Z           ]
2026-06-22T02:23:00.5006704Z         },
2026-06-22T02:23:00.5006786Z         "unit": {
2026-06-22T02:23:00.5006875Z           "complete": true,
2026-06-22T02:23:00.5006961Z           "evidence": [
2026-06-22T02:23:00.5007028Z             {
2026-06-22T02:23:00.5007153Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.5007329Z               "line": 246
2026-06-22T02:23:00.5007411Z             },
2026-06-22T02:23:00.5007567Z             {
2026-06-22T02:23:00.5007678Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.5007764Z               "line": 279
2026-06-22T02:23:00.5007843Z             },
2026-06-22T02:23:00.5007919Z             {
2026-06-22T02:23:00.5008033Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.5008114Z               "line": 319
2026-06-22T02:23:00.5008189Z             },
2026-06-22T02:23:00.5008260Z             {
2026-06-22T02:23:00.5008374Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5008456Z               "line": 599
2026-06-22T02:23:00.5008536Z             },
2026-06-22T02:23:00.5008617Z             {
2026-06-22T02:23:00.5008728Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5008814Z               "line": 672
2026-06-22T02:23:00.5008908Z             },
2026-06-22T02:23:00.5009057Z             {
2026-06-22T02:23:00.5009170Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5009256Z               "line": 816
2026-06-22T02:23:00.5009334Z             },
2026-06-22T02:23:00.5009409Z             {
2026-06-22T02:23:00.5009518Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.5009605Z               "line": 595
2026-06-22T02:23:00.5009673Z             },
2026-06-22T02:23:00.5009752Z             {
2026-06-22T02:23:00.5009867Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:23:00.5009954Z               "line": 399
2026-06-22T02:23:00.5010030Z             },
2026-06-22T02:23:00.5010114Z             {
2026-06-22T02:23:00.5010215Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5010302Z               "line": 8976
2026-06-22T02:23:00.5010382Z             },
2026-06-22T02:23:00.5010462Z             {
2026-06-22T02:23:00.5010562Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5010648Z               "line": 9300
2026-06-22T02:23:00.5010722Z             },
2026-06-22T02:23:00.5010798Z             {
2026-06-22T02:23:00.5010894Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5010975Z               "line": 9717
2026-06-22T02:23:00.5011060Z             }
2026-06-22T02:23:00.5011141Z           ]
2026-06-22T02:23:00.5011218Z         }
2026-06-22T02:23:00.5011299Z       }
2026-06-22T02:23:00.5011380Z     },
2026-06-22T02:23:00.5011456Z     {
2026-06-22T02:23:00.5011537Z       "id": "REQ-SHELL-2",
2026-06-22T02:23:00.5013006Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-22T02:23:00.5013112Z       "requiredStages": [
2026-06-22T02:23:00.5013207Z         "impl",
2026-06-22T02:23:00.5013277Z         "unit",
2026-06-22T02:23:00.5013362Z         "int"
2026-06-22T02:23:00.5013429Z       ],
2026-06-22T02:23:00.5013510Z       "stages": {
2026-06-22T02:23:00.5013597Z         "doc": {
2026-06-22T02:23:00.5013682Z           "complete": false,
2026-06-22T02:23:00.5013763Z           "evidence": []
2026-06-22T02:23:00.5013840Z         },
2026-06-22T02:23:00.5013921Z         "impl": {
2026-06-22T02:23:00.5014001Z           "complete": true,
2026-06-22T02:23:00.5014087Z           "evidence": [
2026-06-22T02:23:00.5014169Z             {
2026-06-22T02:23:00.5014283Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.5014368Z               "line": 217
2026-06-22T02:23:00.5014451Z             },
2026-06-22T02:23:00.5014536Z             {
2026-06-22T02:23:00.5014664Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.5014860Z               "line": 403
2026-06-22T02:23:00.5015037Z             },
2026-06-22T02:23:00.5015118Z             {
2026-06-22T02:23:00.5015231Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:23:00.5015308Z               "line": 250
2026-06-22T02:23:00.5015390Z             },
2026-06-22T02:23:00.5015461Z             {
2026-06-22T02:23:00.5015583Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.5015664Z               "line": 403
2026-06-22T02:23:00.5015741Z             },
2026-06-22T02:23:00.5015825Z             {
2026-06-22T02:23:00.5015929Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5016015Z               "line": 30
2026-06-22T02:23:00.5016087Z             },
2026-06-22T02:23:00.5016172Z             {
2026-06-22T02:23:00.5016286Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5016368Z               "line": 409
2026-06-22T02:23:00.5016454Z             },
2026-06-22T02:23:00.5016535Z             {
2026-06-22T02:23:00.5016649Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5016741Z               "line": 445
2026-06-22T02:23:00.5016821Z             },
2026-06-22T02:23:00.5016906Z             {
2026-06-22T02:23:00.5017012Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5017102Z               "line": 660
2026-06-22T02:23:00.5017179Z             },
2026-06-22T02:23:00.5017260Z             {
2026-06-22T02:23:00.5017370Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.5017460Z               "line": 348
2026-06-22T02:23:00.5017531Z             },
2026-06-22T02:23:00.5017603Z             {
2026-06-22T02:23:00.5017722Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.5017808Z               "line": 115
2026-06-22T02:23:00.5017894Z             },
2026-06-22T02:23:00.5017971Z             {
2026-06-22T02:23:00.5018098Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5018184Z               "line": 120
2026-06-22T02:23:00.5018272Z             },
2026-06-22T02:23:00.5018352Z             {
2026-06-22T02:23:00.5018479Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5018560Z               "line": 374
2026-06-22T02:23:00.5018651Z             },
2026-06-22T02:23:00.5018739Z             {
2026-06-22T02:23:00.5018848Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5018934Z               "line": 500
2026-06-22T02:23:00.5019101Z             },
2026-06-22T02:23:00.5019173Z             {
2026-06-22T02:23:00.5019284Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5019374Z               "line": 24
2026-06-22T02:23:00.5019444Z             },
2026-06-22T02:23:00.5019531Z             {
2026-06-22T02:23:00.5019641Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5019726Z               "line": 76
2026-06-22T02:23:00.5019802Z             },
2026-06-22T02:23:00.5019884Z             {
2026-06-22T02:23:00.5019997Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5020083Z               "line": 154
2026-06-22T02:23:00.5020165Z             },
2026-06-22T02:23:00.5020247Z             {
2026-06-22T02:23:00.5020350Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5020427Z               "line": 177
2026-06-22T02:23:00.5020509Z             },
2026-06-22T02:23:00.5020590Z             {
2026-06-22T02:23:00.5020699Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5020785Z               "line": 273
2026-06-22T02:23:00.5020867Z             },
2026-06-22T02:23:00.5020947Z             {
2026-06-22T02:23:00.5021046Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5021127Z               "line": 456
2026-06-22T02:23:00.5021213Z             },
2026-06-22T02:23:00.5021292Z             {
2026-06-22T02:23:00.5021511Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5021682Z               "line": 538
2026-06-22T02:23:00.5021763Z             },
2026-06-22T02:23:00.5021841Z             {
2026-06-22T02:23:00.5021968Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:23:00.5022063Z               "line": 27
2026-06-22T02:23:00.5022146Z             },
2026-06-22T02:23:00.5022221Z             {
2026-06-22T02:23:00.5022340Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:23:00.5022422Z               "line": 48
2026-06-22T02:23:00.5022508Z             },
2026-06-22T02:23:00.5022584Z             {
2026-06-22T02:23:00.5022693Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5022780Z               "line": 517
2026-06-22T02:23:00.5022865Z             },
2026-06-22T02:23:00.5022946Z             {
2026-06-22T02:23:00.5023047Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5023147Z               "line": 1921
2026-06-22T02:23:00.5023222Z             },
2026-06-22T02:23:00.5023309Z             {
2026-06-22T02:23:00.5023420Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5023499Z               "line": 6334
2026-06-22T02:23:00.5023575Z             },
2026-06-22T02:23:00.5023662Z             {
2026-06-22T02:23:00.5023763Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5023832Z               "line": 6395
2026-06-22T02:23:00.5023918Z             },
2026-06-22T02:23:00.5023989Z             {
2026-06-22T02:23:00.5024090Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5024166Z               "line": 6423
2026-06-22T02:23:00.5024251Z             },
2026-06-22T02:23:00.5024333Z             {
2026-06-22T02:23:00.5024424Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5024500Z               "line": 6477
2026-06-22T02:23:00.5024580Z             },
2026-06-22T02:23:00.5024662Z             {
2026-06-22T02:23:00.5024767Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5024857Z               "line": 6732
2026-06-22T02:23:00.5024948Z             },
2026-06-22T02:23:00.5025030Z             {
2026-06-22T02:23:00.5025134Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5025219Z               "line": 6792
2026-06-22T02:23:00.5025301Z             },
2026-06-22T02:23:00.5025382Z             {
2026-06-22T02:23:00.5025491Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.5025577Z               "line": 298
2026-06-22T02:23:00.5025660Z             },
2026-06-22T02:23:00.5025744Z             {
2026-06-22T02:23:00.5025839Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.5025935Z               "line": 339
2026-06-22T02:23:00.5026012Z             }
2026-06-22T02:23:00.5026101Z           ]
2026-06-22T02:23:00.5026186Z         },
2026-06-22T02:23:00.5026267Z         "int": {
2026-06-22T02:23:00.5026362Z           "complete": true,
2026-06-22T02:23:00.5026456Z           "evidence": [
2026-06-22T02:23:00.5026532Z             {
2026-06-22T02:23:00.5026652Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.5026752Z               "line": 706
2026-06-22T02:23:00.5026832Z             },
2026-06-22T02:23:00.5026909Z             {
2026-06-22T02:23:00.5027028Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5027109Z               "line": 778
2026-06-22T02:23:00.5027190Z             },
2026-06-22T02:23:00.5027262Z             {
2026-06-22T02:23:00.5027381Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5027461Z               "line": 1213
2026-06-22T02:23:00.5027544Z             },
2026-06-22T02:23:00.5027629Z             {
2026-06-22T02:23:00.5027753Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T02:23:00.5027843Z               "line": 18
2026-06-22T02:23:00.5027920Z             }
2026-06-22T02:23:00.5027996Z           ]
2026-06-22T02:23:00.5028230Z         },
2026-06-22T02:23:00.5028316Z         "unit": {
2026-06-22T02:23:00.5028401Z           "complete": true,
2026-06-22T02:23:00.5028559Z           "evidence": [
2026-06-22T02:23:00.5028635Z             {
2026-06-22T02:23:00.5028740Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5028827Z               "line": 744
2026-06-22T02:23:00.5028912Z             },
2026-06-22T02:23:00.5029072Z             {
2026-06-22T02:23:00.5029187Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:23:00.5029276Z               "line": 796
2026-06-22T02:23:00.5029360Z             },
2026-06-22T02:23:00.5029437Z             {
2026-06-22T02:23:00.5029539Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5029624Z               "line": 705
2026-06-22T02:23:00.5029704Z             },
2026-06-22T02:23:00.5029776Z             {
2026-06-22T02:23:00.5029891Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5029981Z               "line": 754
2026-06-22T02:23:00.5030062Z             },
2026-06-22T02:23:00.5030144Z             {
2026-06-22T02:23:00.5030272Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5030352Z               "line": 778
2026-06-22T02:23:00.5030435Z             },
2026-06-22T02:23:00.5030511Z             {
2026-06-22T02:23:00.5030629Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5030720Z               "line": 603
2026-06-22T02:23:00.5030797Z             },
2026-06-22T02:23:00.5030877Z             {
2026-06-22T02:23:00.5030987Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5031070Z               "line": 624
2026-06-22T02:23:00.5031155Z             },
2026-06-22T02:23:00.5031234Z             {
2026-06-22T02:23:00.5031350Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5031427Z               "line": 660
2026-06-22T02:23:00.5031507Z             },
2026-06-22T02:23:00.5031592Z             {
2026-06-22T02:23:00.5031706Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5031796Z               "line": 714
2026-06-22T02:23:00.5031871Z             },
2026-06-22T02:23:00.5031956Z             {
2026-06-22T02:23:00.5032066Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5032153Z               "line": 732
2026-06-22T02:23:00.5032232Z             },
2026-06-22T02:23:00.5032309Z             {
2026-06-22T02:23:00.5032420Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5032505Z               "line": 766
2026-06-22T02:23:00.5032581Z             },
2026-06-22T02:23:00.5032658Z             {
2026-06-22T02:23:00.5032767Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:23:00.5032853Z               "line": 841
2026-06-22T02:23:00.5032938Z             },
2026-06-22T02:23:00.5033016Z             {
2026-06-22T02:23:00.5033139Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:23:00.5033220Z               "line": 85
2026-06-22T02:23:00.5033302Z             },
2026-06-22T02:23:00.5033397Z             {
2026-06-22T02:23:00.5033497Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5033592Z               "line": 8044
2026-06-22T02:23:00.5033674Z             },
2026-06-22T02:23:00.5033758Z             {
2026-06-22T02:23:00.5033859Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5033941Z               "line": 9054
2026-06-22T02:23:00.5034027Z             },
2026-06-22T02:23:00.5034106Z             {
2026-06-22T02:23:00.5034208Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5034285Z               "line": 9124
2026-06-22T02:23:00.5034365Z             },
2026-06-22T02:23:00.5034444Z             {
2026-06-22T02:23:00.5034539Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5034631Z               "line": 9162
2026-06-22T02:23:00.5034708Z             }
2026-06-22T02:23:00.5034783Z           ]
2026-06-22T02:23:00.5034960Z         }
2026-06-22T02:23:00.5035041Z       }
2026-06-22T02:23:00.5035121Z     },
2026-06-22T02:23:00.5035294Z     {
2026-06-22T02:23:00.5035384Z       "id": "REQ-SHELL-3",
2026-06-22T02:23:00.5037159Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-22T02:23:00.5037260Z       "requiredStages": [
2026-06-22T02:23:00.5037336Z         "impl",
2026-06-22T02:23:00.5037416Z         "unit",
2026-06-22T02:23:00.5037508Z         "int"
2026-06-22T02:23:00.5037574Z       ],
2026-06-22T02:23:00.5037664Z       "stages": {
2026-06-22T02:23:00.5037765Z         "doc": {
2026-06-22T02:23:00.5037846Z           "complete": false,
2026-06-22T02:23:00.5037922Z           "evidence": []
2026-06-22T02:23:00.5038003Z         },
2026-06-22T02:23:00.5038084Z         "impl": {
2026-06-22T02:23:00.5038166Z           "complete": true,
2026-06-22T02:23:00.5038256Z           "evidence": [
2026-06-22T02:23:00.5038332Z             {
2026-06-22T02:23:00.5038448Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.5038537Z               "line": 229
2026-06-22T02:23:00.5038608Z             },
2026-06-22T02:23:00.5038689Z             {
2026-06-22T02:23:00.5038805Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5038890Z               "line": 36
2026-06-22T02:23:00.5039038Z             },
2026-06-22T02:23:00.5039110Z             {
2026-06-22T02:23:00.5039228Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5039309Z               "line": 137
2026-06-22T02:23:00.5039421Z             },
2026-06-22T02:23:00.5039519Z             {
2026-06-22T02:23:00.5039632Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5039719Z               "line": 153
2026-06-22T02:23:00.5039799Z             },
2026-06-22T02:23:00.5039883Z             {
2026-06-22T02:23:00.5039988Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5040074Z               "line": 165
2026-06-22T02:23:00.5040160Z             },
2026-06-22T02:23:00.5040240Z             {
2026-06-22T02:23:00.5040351Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5040432Z               "line": 242
2026-06-22T02:23:00.5040513Z             },
2026-06-22T02:23:00.5040593Z             {
2026-06-22T02:23:00.5040699Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5040785Z               "line": 267
2026-06-22T02:23:00.5040865Z             },
2026-06-22T02:23:00.5040951Z             {
2026-06-22T02:23:00.5041052Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5041137Z               "line": 293
2026-06-22T02:23:00.5041218Z             },
2026-06-22T02:23:00.5041290Z             {
2026-06-22T02:23:00.5041400Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:23:00.5041480Z               "line": 51
2026-06-22T02:23:00.5041561Z             },
2026-06-22T02:23:00.5041644Z             {
2026-06-22T02:23:00.5041762Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5041838Z               "line": 333
2026-06-22T02:23:00.5041920Z             },
2026-06-22T02:23:00.5042006Z             {
2026-06-22T02:23:00.5042109Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5042199Z               "line": 373
2026-06-22T02:23:00.5042276Z             },
2026-06-22T02:23:00.5042356Z             {
2026-06-22T02:23:00.5042469Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5042665Z               "line": 602
2026-06-22T02:23:00.5042751Z             },
2026-06-22T02:23:00.5042922Z             {
2026-06-22T02:23:00.5043042Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.5043121Z               "line": 132
2026-06-22T02:23:00.5043203Z             },
2026-06-22T02:23:00.5043276Z             {
2026-06-22T02:23:00.5043390Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5043474Z               "line": 448
2026-06-22T02:23:00.5043557Z             },
2026-06-22T02:23:00.5043633Z             {
2026-06-22T02:23:00.5043737Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:23:00.5043828Z               "line": 74
2026-06-22T02:23:00.5043915Z             },
2026-06-22T02:23:00.5043985Z             {
2026-06-22T02:23:00.5044104Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5044182Z               "line": 605
2026-06-22T02:23:00.5044272Z             },
2026-06-22T02:23:00.5044337Z             {
2026-06-22T02:23:00.5044453Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5044554Z               "line": 396
2026-06-22T02:23:00.5044629Z             },
2026-06-22T02:23:00.5044705Z             {
2026-06-22T02:23:00.5044807Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5044893Z               "line": 6518
2026-06-22T02:23:00.5044972Z             }
2026-06-22T02:23:00.5045057Z           ]
2026-06-22T02:23:00.5045138Z         },
2026-06-22T02:23:00.5045210Z         "int": {
2026-06-22T02:23:00.5045305Z           "complete": true,
2026-06-22T02:23:00.5045391Z           "evidence": [
2026-06-22T02:23:00.5045472Z             {
2026-06-22T02:23:00.5045592Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5045672Z               "line": 1262
2026-06-22T02:23:00.5045758Z             },
2026-06-22T02:23:00.5045840Z             {
2026-06-22T02:23:00.5045954Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-22T02:23:00.5046049Z               "line": 17
2026-06-22T02:23:00.5046140Z             }
2026-06-22T02:23:00.5046230Z           ]
2026-06-22T02:23:00.5046320Z         },
2026-06-22T02:23:00.5046407Z         "unit": {
2026-06-22T02:23:00.5046526Z           "complete": true,
2026-06-22T02:23:00.5046621Z           "evidence": [
2026-06-22T02:23:00.5046697Z             {
2026-06-22T02:23:00.5046818Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5046892Z               "line": 311
2026-06-22T02:23:00.5046974Z             },
2026-06-22T02:23:00.5047056Z             {
2026-06-22T02:23:00.5047160Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5047245Z               "line": 325
2026-06-22T02:23:00.5047325Z             },
2026-06-22T02:23:00.5047407Z             {
2026-06-22T02:23:00.5047515Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5047605Z               "line": 343
2026-06-22T02:23:00.5047691Z             },
2026-06-22T02:23:00.5047767Z             {
2026-06-22T02:23:00.5047872Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5047957Z               "line": 364
2026-06-22T02:23:00.5048044Z             },
2026-06-22T02:23:00.5048125Z             {
2026-06-22T02:23:00.5048243Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:23:00.5048330Z               "line": 376
2026-06-22T02:23:00.5048406Z             },
2026-06-22T02:23:00.5048487Z             {
2026-06-22T02:23:00.5048596Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5048683Z               "line": 897
2026-06-22T02:23:00.5048754Z             },
2026-06-22T02:23:00.5048835Z             {
2026-06-22T02:23:00.5049017Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5049102Z               "line": 957
2026-06-22T02:23:00.5049188Z             },
2026-06-22T02:23:00.5049269Z             {
2026-06-22T02:23:00.5049521Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:23:00.5049604Z               "line": 338
2026-06-22T02:23:00.5049779Z             },
2026-06-22T02:23:00.5049865Z             {
2026-06-22T02:23:00.5049971Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.5050046Z               "line": 769
2026-06-22T02:23:00.5050126Z             },
2026-06-22T02:23:00.5050211Z             {
2026-06-22T02:23:00.5050312Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5050391Z               "line": 8836
2026-06-22T02:23:00.5050481Z             }
2026-06-22T02:23:00.5050558Z           ]
2026-06-22T02:23:00.5050639Z         }
2026-06-22T02:23:00.5050716Z       }
2026-06-22T02:23:00.5050801Z     },
2026-06-22T02:23:00.5050882Z     {
2026-06-22T02:23:00.5050964Z       "id": "REQ-SHELL-4",
2026-06-22T02:23:00.5052712Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-22T02:23:00.5052821Z       "requiredStages": [
2026-06-22T02:23:00.5052907Z         "doc",
2026-06-22T02:23:00.5052991Z         "impl",
2026-06-22T02:23:00.5053071Z         "unit",
2026-06-22T02:23:00.5053158Z         "int"
2026-06-22T02:23:00.5053235Z       ],
2026-06-22T02:23:00.5053315Z       "stages": {
2026-06-22T02:23:00.5053400Z         "doc": {
2026-06-22T02:23:00.5053497Z           "complete": true,
2026-06-22T02:23:00.5053587Z           "evidence": [
2026-06-22T02:23:00.5053668Z             {
2026-06-22T02:23:00.5053768Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.5053840Z               "line": 281
2026-06-22T02:23:00.5053926Z             },
2026-06-22T02:23:00.5054015Z             {
2026-06-22T02:23:00.5054245Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T02:23:00.5054335Z               "line": 88
2026-06-22T02:23:00.5054412Z             }
2026-06-22T02:23:00.5054498Z           ]
2026-06-22T02:23:00.5054579Z         },
2026-06-22T02:23:00.5054659Z         "impl": {
2026-06-22T02:23:00.5054742Z           "complete": true,
2026-06-22T02:23:00.5054827Z           "evidence": [
2026-06-22T02:23:00.5054907Z             {
2026-06-22T02:23:00.5055018Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.5057758Z               "line": 243
2026-06-22T02:23:00.5057857Z             },
2026-06-22T02:23:00.5057943Z             {
2026-06-22T02:23:00.5058075Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:23:00.5058179Z               "line": 61
2026-06-22T02:23:00.5058260Z             },
2026-06-22T02:23:00.5058342Z             {
2026-06-22T02:23:00.5058474Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5058556Z               "line": 218
2026-06-22T02:23:00.5058642Z             },
2026-06-22T02:23:00.5058719Z             {
2026-06-22T02:23:00.5058832Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5058919Z               "line": 245
2026-06-22T02:23:00.5059066Z             },
2026-06-22T02:23:00.5059142Z             {
2026-06-22T02:23:00.5059258Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5059343Z               "line": 566
2026-06-22T02:23:00.5059423Z             },
2026-06-22T02:23:00.5059509Z             {
2026-06-22T02:23:00.5059624Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5059701Z               "line": 1141
2026-06-22T02:23:00.5059776Z             },
2026-06-22T02:23:00.5059854Z             {
2026-06-22T02:23:00.5060096Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5060173Z               "line": 1153
2026-06-22T02:23:00.5060343Z             },
2026-06-22T02:23:00.5060425Z             {
2026-06-22T02:23:00.5060531Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5060616Z               "line": 1194
2026-06-22T02:23:00.5060696Z             },
2026-06-22T02:23:00.5060771Z             {
2026-06-22T02:23:00.5060891Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5060970Z               "line": 456
2026-06-22T02:23:00.5061051Z             },
2026-06-22T02:23:00.5061127Z             {
2026-06-22T02:23:00.5061243Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5061323Z               "line": 44
2026-06-22T02:23:00.5061403Z             },
2026-06-22T02:23:00.5061481Z             {
2026-06-22T02:23:00.5061600Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5061695Z               "line": 208
2026-06-22T02:23:00.5061771Z             },
2026-06-22T02:23:00.5061848Z             {
2026-06-22T02:23:00.5061957Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5062038Z               "line": 227
2026-06-22T02:23:00.5062120Z             },
2026-06-22T02:23:00.5062196Z             {
2026-06-22T02:23:00.5062315Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5062391Z               "line": 253
2026-06-22T02:23:00.5062473Z             },
2026-06-22T02:23:00.5062553Z             {
2026-06-22T02:23:00.5062663Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5062750Z               "line": 272
2026-06-22T02:23:00.5062821Z             },
2026-06-22T02:23:00.5062896Z             {
2026-06-22T02:23:00.5062996Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5063084Z               "line": 392
2026-06-22T02:23:00.5063164Z             },
2026-06-22T02:23:00.5063244Z             {
2026-06-22T02:23:00.5063367Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5063453Z               "line": 421
2026-06-22T02:23:00.5063532Z             },
2026-06-22T02:23:00.5063612Z             {
2026-06-22T02:23:00.5063718Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5063805Z               "line": 439
2026-06-22T02:23:00.5063885Z             },
2026-06-22T02:23:00.5063965Z             {
2026-06-22T02:23:00.5064071Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5064152Z               "line": 458
2026-06-22T02:23:00.5064223Z             },
2026-06-22T02:23:00.5064309Z             {
2026-06-22T02:23:00.5064419Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5064500Z               "line": 486
2026-06-22T02:23:00.5064585Z             },
2026-06-22T02:23:00.5064658Z             {
2026-06-22T02:23:00.5064763Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5064853Z               "line": 624
2026-06-22T02:23:00.5064929Z             },
2026-06-22T02:23:00.5065016Z             {
2026-06-22T02:23:00.5065129Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5065215Z               "line": 829
2026-06-22T02:23:00.5065297Z             },
2026-06-22T02:23:00.5065373Z             {
2026-06-22T02:23:00.5065487Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5065568Z               "line": 435
2026-06-22T02:23:00.5065646Z             },
2026-06-22T02:23:00.5065716Z             {
2026-06-22T02:23:00.5065811Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5065888Z               "line": 6574
2026-06-22T02:23:00.5065965Z             }
2026-06-22T02:23:00.5066041Z           ]
2026-06-22T02:23:00.5066125Z         },
2026-06-22T02:23:00.5066206Z         "int": {
2026-06-22T02:23:00.5066296Z           "complete": true,
2026-06-22T02:23:00.5066384Z           "evidence": [
2026-06-22T02:23:00.5066540Z             {
2026-06-22T02:23:00.5066646Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-22T02:23:00.5066797Z               "line": 18
2026-06-22T02:23:00.5066878Z             }
2026-06-22T02:23:00.5066965Z           ]
2026-06-22T02:23:00.5067041Z         },
2026-06-22T02:23:00.5067121Z         "unit": {
2026-06-22T02:23:00.5067207Z           "complete": true,
2026-06-22T02:23:00.5067289Z           "evidence": [
2026-06-22T02:23:00.5067369Z             {
2026-06-22T02:23:00.5067488Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5067571Z               "line": 1391
2026-06-22T02:23:00.5067651Z             },
2026-06-22T02:23:00.5067732Z             {
2026-06-22T02:23:00.5067832Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5067919Z               "line": 1420
2026-06-22T02:23:00.5067999Z             },
2026-06-22T02:23:00.5068080Z             {
2026-06-22T02:23:00.5068196Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5068281Z               "line": 504
2026-06-22T02:23:00.5068365Z             },
2026-06-22T02:23:00.5068441Z             {
2026-06-22T02:23:00.5068560Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5068640Z               "line": 514
2026-06-22T02:23:00.5068720Z             },
2026-06-22T02:23:00.5068806Z             {
2026-06-22T02:23:00.5068916Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5069054Z               "line": 531
2026-06-22T02:23:00.5069130Z             },
2026-06-22T02:23:00.5069203Z             {
2026-06-22T02:23:00.5069312Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5069397Z               "line": 543
2026-06-22T02:23:00.5069479Z             },
2026-06-22T02:23:00.5069555Z             {
2026-06-22T02:23:00.5069659Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:23:00.5069745Z               "line": 555
2026-06-22T02:23:00.5069823Z             },
2026-06-22T02:23:00.5069903Z             {
2026-06-22T02:23:00.5070007Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5070104Z               "line": 1145
2026-06-22T02:23:00.5070180Z             },
2026-06-22T02:23:00.5070261Z             {
2026-06-22T02:23:00.5070365Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.5070443Z               "line": 776
2026-06-22T02:23:00.5070528Z             }
2026-06-22T02:23:00.5070609Z           ]
2026-06-22T02:23:00.5070685Z         }
2026-06-22T02:23:00.5070767Z       }
2026-06-22T02:23:00.5070852Z     },
2026-06-22T02:23:00.5070928Z     {
2026-06-22T02:23:00.5071009Z       "id": "REQ-SHELL-5",
2026-06-22T02:23:00.5072226Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-22T02:23:00.5072327Z       "requiredStages": [
2026-06-22T02:23:00.5072408Z         "doc",
2026-06-22T02:23:00.5072494Z         "impl",
2026-06-22T02:23:00.5072579Z         "unit",
2026-06-22T02:23:00.5072661Z         "int"
2026-06-22T02:23:00.5072742Z       ],
2026-06-22T02:23:00.5072827Z       "stages": {
2026-06-22T02:23:00.5072899Z         "doc": {
2026-06-22T02:23:00.5072980Z           "complete": true,
2026-06-22T02:23:00.5073061Z           "evidence": [
2026-06-22T02:23:00.5073137Z             {
2026-06-22T02:23:00.5073237Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.5073319Z               "line": 284
2026-06-22T02:23:00.5073400Z             }
2026-06-22T02:23:00.5073475Z           ]
2026-06-22T02:23:00.5073557Z         },
2026-06-22T02:23:00.5073639Z         "impl": {
2026-06-22T02:23:00.5073733Z           "complete": true,
2026-06-22T02:23:00.5073941Z           "evidence": [
2026-06-22T02:23:00.5074022Z             {
2026-06-22T02:23:00.5074235Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:23:00.5074316Z               "line": 260
2026-06-22T02:23:00.5074393Z             }
2026-06-22T02:23:00.5074469Z           ]
2026-06-22T02:23:00.5074550Z         },
2026-06-22T02:23:00.5074631Z         "int": {
2026-06-22T02:23:00.5074717Z           "complete": true,
2026-06-22T02:23:00.5074798Z           "evidence": [
2026-06-22T02:23:00.5074879Z             {
2026-06-22T02:23:00.5074994Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5075079Z               "line": 827
2026-06-22T02:23:00.5075159Z             },
2026-06-22T02:23:00.5075233Z             {
2026-06-22T02:23:00.5075346Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5075427Z               "line": 1290
2026-06-22T02:23:00.5075494Z             },
2026-06-22T02:23:00.5075576Z             {
2026-06-22T02:23:00.5075718Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-22T02:23:00.5075804Z               "line": 23
2026-06-22T02:23:00.5075886Z             }
2026-06-22T02:23:00.5075966Z           ]
2026-06-22T02:23:00.5076047Z         },
2026-06-22T02:23:00.5076128Z         "unit": {
2026-06-22T02:23:00.5076215Z           "complete": true,
2026-06-22T02:23:00.5076300Z           "evidence": [
2026-06-22T02:23:00.5076371Z             {
2026-06-22T02:23:00.5076482Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:23:00.5076558Z               "line": 803
2026-06-22T02:23:00.5076638Z             }
2026-06-22T02:23:00.5076718Z           ]
2026-06-22T02:23:00.5076799Z         }
2026-06-22T02:23:00.5076876Z       }
2026-06-22T02:23:00.5076958Z     },
2026-06-22T02:23:00.5077042Z     {
2026-06-22T02:23:00.5077128Z       "id": "REQ-START-1",
2026-06-22T02:23:00.5077315Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-22T02:23:00.5077414Z       "requiredStages": [
2026-06-22T02:23:00.5077506Z         "impl",
2026-06-22T02:23:00.5077586Z         "unit"
2026-06-22T02:23:00.5077672Z       ],
2026-06-22T02:23:00.5077758Z       "stages": {
2026-06-22T02:23:00.5077830Z         "doc": {
2026-06-22T02:23:00.5077920Z           "complete": false,
2026-06-22T02:23:00.5077996Z           "evidence": []
2026-06-22T02:23:00.5078068Z         },
2026-06-22T02:23:00.5078150Z         "impl": {
2026-06-22T02:23:00.5078240Z           "complete": true,
2026-06-22T02:23:00.5078330Z           "evidence": [
2026-06-22T02:23:00.5078402Z             {
2026-06-22T02:23:00.5078517Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:23:00.5078596Z               "line": 16
2026-06-22T02:23:00.5078673Z             }
2026-06-22T02:23:00.5078736Z           ]
2026-06-22T02:23:00.5078822Z         },
2026-06-22T02:23:00.5078906Z         "int": {
2026-06-22T02:23:00.5079044Z           "complete": false,
2026-06-22T02:23:00.5079125Z           "evidence": []
2026-06-22T02:23:00.5079210Z         },
2026-06-22T02:23:00.5079280Z         "unit": {
2026-06-22T02:23:00.5079381Z           "complete": true,
2026-06-22T02:23:00.5079486Z           "evidence": [
2026-06-22T02:23:00.5079562Z             {
2026-06-22T02:23:00.5079671Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:23:00.5079748Z               "line": 48
2026-06-22T02:23:00.5079834Z             },
2026-06-22T02:23:00.5079914Z             {
2026-06-22T02:23:00.5080025Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:23:00.5080111Z               "line": 63
2026-06-22T02:23:00.5080196Z             }
2026-06-22T02:23:00.5080276Z           ]
2026-06-22T02:23:00.5080354Z         }
2026-06-22T02:23:00.5080435Z       }
2026-06-22T02:23:00.5080516Z     },
2026-06-22T02:23:00.5080591Z     {
2026-06-22T02:23:00.5080683Z       "id": "REQ-START-2",
2026-06-22T02:23:00.5080831Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-22T02:23:00.5081027Z       "requiredStages": [
2026-06-22T02:23:00.5081111Z         "impl",
2026-06-22T02:23:00.5081192Z         "unit",
2026-06-22T02:23:00.5081365Z         "int"
2026-06-22T02:23:00.5081440Z       ],
2026-06-22T02:23:00.5081531Z       "stages": {
2026-06-22T02:23:00.5081613Z         "doc": {
2026-06-22T02:23:00.5081704Z           "complete": false,
2026-06-22T02:23:00.5081788Z           "evidence": []
2026-06-22T02:23:00.5081873Z         },
2026-06-22T02:23:00.5081959Z         "impl": {
2026-06-22T02:23:00.5082049Z           "complete": true,
2026-06-22T02:23:00.5082123Z           "evidence": [
2026-06-22T02:23:00.5082204Z             {
2026-06-22T02:23:00.5082320Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5082401Z               "line": 16
2026-06-22T02:23:00.5082481Z             },
2026-06-22T02:23:00.5082557Z             {
2026-06-22T02:23:00.5082663Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5082744Z               "line": 115
2026-06-22T02:23:00.5082824Z             },
2026-06-22T02:23:00.5082906Z             {
2026-06-22T02:23:00.5083015Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5083096Z               "line": 300
2026-06-22T02:23:00.5083177Z             }
2026-06-22T02:23:00.5083255Z           ]
2026-06-22T02:23:00.5083334Z         },
2026-06-22T02:23:00.5083420Z         "int": {
2026-06-22T02:23:00.5083497Z           "complete": true,
2026-06-22T02:23:00.5083584Z           "evidence": [
2026-06-22T02:23:00.5083659Z             {
2026-06-22T02:23:00.5083764Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.5083851Z               "line": 186
2026-06-22T02:23:00.5083937Z             }
2026-06-22T02:23:00.5084006Z           ]
2026-06-22T02:23:00.5084079Z         },
2026-06-22T02:23:00.5084161Z         "unit": {
2026-06-22T02:23:00.5084242Z           "complete": true,
2026-06-22T02:23:00.5084331Z           "evidence": [
2026-06-22T02:23:00.5084411Z             {
2026-06-22T02:23:00.5084526Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5084601Z               "line": 590
2026-06-22T02:23:00.5084681Z             },
2026-06-22T02:23:00.5084761Z             {
2026-06-22T02:23:00.5084867Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5084944Z               "line": 623
2026-06-22T02:23:00.5085024Z             }
2026-06-22T02:23:00.5085105Z           ]
2026-06-22T02:23:00.5085183Z         }
2026-06-22T02:23:00.5085253Z       }
2026-06-22T02:23:00.5085334Z     },
2026-06-22T02:23:00.5085410Z     {
2026-06-22T02:23:00.5085502Z       "id": "REQ-START-3",
2026-06-22T02:23:00.5085663Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-22T02:23:00.5085744Z       "requiredStages": [
2026-06-22T02:23:00.5085826Z         "impl",
2026-06-22T02:23:00.5085911Z         "unit",
2026-06-22T02:23:00.5086001Z         "int"
2026-06-22T02:23:00.5086078Z       ],
2026-06-22T02:23:00.5086160Z       "stages": {
2026-06-22T02:23:00.5086250Z         "doc": {
2026-06-22T02:23:00.5086340Z           "complete": false,
2026-06-22T02:23:00.5086427Z           "evidence": []
2026-06-22T02:23:00.5086507Z         },
2026-06-22T02:23:00.5086593Z         "impl": {
2026-06-22T02:23:00.5086674Z           "complete": true,
2026-06-22T02:23:00.5086766Z           "evidence": [
2026-06-22T02:23:00.5086836Z             {
2026-06-22T02:23:00.5086951Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.5087028Z               "line": 23
2026-06-22T02:23:00.5087109Z             },
2026-06-22T02:23:00.5087193Z             {
2026-06-22T02:23:00.5087297Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.5087378Z               "line": 205
2026-06-22T02:23:00.5087456Z             },
2026-06-22T02:23:00.5087536Z             {
2026-06-22T02:23:00.5087640Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.5087722Z               "line": 221
2026-06-22T02:23:00.5087799Z             },
2026-06-22T02:23:00.5087964Z             {
2026-06-22T02:23:00.5088061Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5088213Z               "line": 17
2026-06-22T02:23:00.5088294Z             },
2026-06-22T02:23:00.5088381Z             {
2026-06-22T02:23:00.5088485Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5088575Z               "line": 35
2026-06-22T02:23:00.5088657Z             },
2026-06-22T02:23:00.5088738Z             {
2026-06-22T02:23:00.5088843Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5088923Z               "line": 116
2026-06-22T02:23:00.5089152Z             }
2026-06-22T02:23:00.5089219Z           ]
2026-06-22T02:23:00.5089296Z         },
2026-06-22T02:23:00.5089368Z         "int": {
2026-06-22T02:23:00.5089481Z           "complete": true,
2026-06-22T02:23:00.5089585Z           "evidence": [
2026-06-22T02:23:00.5089666Z             {
2026-06-22T02:23:00.5089779Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:23:00.5089878Z               "line": 488
2026-06-22T02:23:00.5089960Z             }
2026-06-22T02:23:00.5090051Z           ]
2026-06-22T02:23:00.5090132Z         },
2026-06-22T02:23:00.5090212Z         "unit": {
2026-06-22T02:23:00.5090294Z           "complete": true,
2026-06-22T02:23:00.5090375Z           "evidence": [
2026-06-22T02:23:00.5090451Z             {
2026-06-22T02:23:00.5090565Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.5090638Z               "line": 381
2026-06-22T02:23:00.5090713Z             },
2026-06-22T02:23:00.5090808Z             {
2026-06-22T02:23:00.5090947Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.5091028Z               "line": 402
2026-06-22T02:23:00.5091104Z             },
2026-06-22T02:23:00.5091181Z             {
2026-06-22T02:23:00.5091291Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:23:00.5091376Z               "line": 412
2026-06-22T02:23:00.5091563Z             },
2026-06-22T02:23:00.5091648Z             {
2026-06-22T02:23:00.5091762Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5091839Z               "line": 591
2026-06-22T02:23:00.5091930Z             },
2026-06-22T02:23:00.5092024Z             {
2026-06-22T02:23:00.5092139Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5092221Z               "line": 624
2026-06-22T02:23:00.5092306Z             },
2026-06-22T02:23:00.5092386Z             {
2026-06-22T02:23:00.5092491Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5092590Z               "line": 657
2026-06-22T02:23:00.5092670Z             }
2026-06-22T02:23:00.5092755Z           ]
2026-06-22T02:23:00.5092837Z         }
2026-06-22T02:23:00.5092927Z       }
2026-06-22T02:23:00.5093013Z     },
2026-06-22T02:23:00.5093089Z     {
2026-06-22T02:23:00.5093190Z       "id": "REQ-START-4",
2026-06-22T02:23:00.5093328Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-22T02:23:00.5093432Z       "requiredStages": [
2026-06-22T02:23:00.5093524Z         "impl",
2026-06-22T02:23:00.5093624Z         "unit"
2026-06-22T02:23:00.5093713Z       ],
2026-06-22T02:23:00.5093800Z       "stages": {
2026-06-22T02:23:00.5093881Z         "doc": {
2026-06-22T02:23:00.5093976Z           "complete": false,
2026-06-22T02:23:00.5094057Z           "evidence": []
2026-06-22T02:23:00.5094139Z         },
2026-06-22T02:23:00.5094219Z         "impl": {
2026-06-22T02:23:00.5094305Z           "complete": true,
2026-06-22T02:23:00.5094391Z           "evidence": [
2026-06-22T02:23:00.5094473Z             {
2026-06-22T02:23:00.5094595Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5094677Z               "line": 585
2026-06-22T02:23:00.5094764Z             }
2026-06-22T02:23:00.5094849Z           ]
2026-06-22T02:23:00.5094929Z         },
2026-06-22T02:23:00.5095014Z         "int": {
2026-06-22T02:23:00.5095100Z           "complete": false,
2026-06-22T02:23:00.5095312Z           "evidence": []
2026-06-22T02:23:00.5095389Z         },
2026-06-22T02:23:00.5095480Z         "unit": {
2026-06-22T02:23:00.5095694Z           "complete": true,
2026-06-22T02:23:00.5095780Z           "evidence": [
2026-06-22T02:23:00.5095861Z             {
2026-06-22T02:23:00.5095984Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5096072Z               "line": 1026
2026-06-22T02:23:00.5096157Z             }
2026-06-22T02:23:00.5096237Z           ]
2026-06-22T02:23:00.5096319Z         }
2026-06-22T02:23:00.5096405Z       }
2026-06-22T02:23:00.5096485Z     },
2026-06-22T02:23:00.5096566Z     {
2026-06-22T02:23:00.5096662Z       "id": "REQ-START-5",
2026-06-22T02:23:00.5099465Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-22T02:23:00.5099580Z       "requiredStages": [
2026-06-22T02:23:00.5099660Z         "doc",
2026-06-22T02:23:00.5099741Z         "impl",
2026-06-22T02:23:00.5099827Z         "unit",
2026-06-22T02:23:00.5099909Z         "int"
2026-06-22T02:23:00.5099989Z       ],
2026-06-22T02:23:00.5100069Z       "stages": {
2026-06-22T02:23:00.5100150Z         "doc": {
2026-06-22T02:23:00.5100250Z           "complete": true,
2026-06-22T02:23:00.5100339Z           "evidence": [
2026-06-22T02:23:00.5100429Z             {
2026-06-22T02:23:00.5100525Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.5100602Z               "line": 176
2026-06-22T02:23:00.5100687Z             },
2026-06-22T02:23:00.5100767Z             {
2026-06-22T02:23:00.5100902Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-22T02:23:00.5100982Z               "line": 28
2026-06-22T02:23:00.5101058Z             }
2026-06-22T02:23:00.5101135Z           ]
2026-06-22T02:23:00.5101212Z         },
2026-06-22T02:23:00.5101297Z         "impl": {
2026-06-22T02:23:00.5101382Z           "complete": true,
2026-06-22T02:23:00.5101465Z           "evidence": [
2026-06-22T02:23:00.5101545Z             {
2026-06-22T02:23:00.5101669Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.5101779Z               "line": 26
2026-06-22T02:23:00.5101884Z             },
2026-06-22T02:23:00.5101974Z             {
2026-06-22T02:23:00.5102079Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.5102171Z               "line": 212
2026-06-22T02:23:00.5102246Z             },
2026-06-22T02:23:00.5102322Z             {
2026-06-22T02:23:00.5102438Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.5102528Z               "line": 221
2026-06-22T02:23:00.5102613Z             },
2026-06-22T02:23:00.5102690Z             {
2026-06-22T02:23:00.5102805Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.5102889Z               "line": 485
2026-06-22T02:23:00.5102974Z             },
2026-06-22T02:23:00.5103055Z             {
2026-06-22T02:23:00.5103160Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5103244Z               "line": 36
2026-06-22T02:23:00.5103325Z             },
2026-06-22T02:23:00.5103406Z             {
2026-06-22T02:23:00.5103512Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5103736Z               "line": 118
2026-06-22T02:23:00.5103816Z             },
2026-06-22T02:23:00.5103983Z             {
2026-06-22T02:23:00.5104089Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:23:00.5104179Z               "line": 329
2026-06-22T02:23:00.5104268Z             }
2026-06-22T02:23:00.5104346Z           ]
2026-06-22T02:23:00.5104427Z         },
2026-06-22T02:23:00.5104508Z         "int": {
2026-06-22T02:23:00.5104603Z           "complete": true,
2026-06-22T02:23:00.5104690Z           "evidence": [
2026-06-22T02:23:00.5104761Z             {
2026-06-22T02:23:00.5104888Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:23:00.5104995Z               "line": 17
2026-06-22T02:23:00.5105081Z             }
2026-06-22T02:23:00.5105175Z           ]
2026-06-22T02:23:00.5105271Z         },
2026-06-22T02:23:00.5105358Z         "unit": {
2026-06-22T02:23:00.5105437Z           "complete": true,
2026-06-22T02:23:00.5105532Z           "evidence": [
2026-06-22T02:23:00.5105622Z             {
2026-06-22T02:23:00.5105736Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.5105834Z               "line": 358
2026-06-22T02:23:00.5105915Z             },
2026-06-22T02:23:00.5106002Z             {
2026-06-22T02:23:00.5106116Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:23:00.5106211Z               "line": 371
2026-06-22T02:23:00.5106293Z             },
2026-06-22T02:23:00.5106373Z             {
2026-06-22T02:23:00.5106478Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:23:00.5106569Z               "line": 597
2026-06-22T02:23:00.5106655Z             }
2026-06-22T02:23:00.5106732Z           ]
2026-06-22T02:23:00.5106816Z         }
2026-06-22T02:23:00.5106899Z       }
2026-06-22T02:23:00.5106984Z     },
2026-06-22T02:23:00.5107065Z     {
2026-06-22T02:23:00.5107150Z       "id": "REQ-STORE-1",
2026-06-22T02:23:00.5107966Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-22T02:23:00.5108061Z       "requiredStages": [
2026-06-22T02:23:00.5108153Z         "impl",
2026-06-22T02:23:00.5108234Z         "unit"
2026-06-22T02:23:00.5108309Z       ],
2026-06-22T02:23:00.5108394Z       "stages": {
2026-06-22T02:23:00.5108475Z         "doc": {
2026-06-22T02:23:00.5108566Z           "complete": false,
2026-06-22T02:23:00.5108652Z           "evidence": []
2026-06-22T02:23:00.5108732Z         },
2026-06-22T02:23:00.5108814Z         "impl": {
2026-06-22T02:23:00.5108900Z           "complete": true,
2026-06-22T02:23:00.5109071Z           "evidence": [
2026-06-22T02:23:00.5109153Z             {
2026-06-22T02:23:00.5109277Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5109390Z               "line": 23
2026-06-22T02:23:00.5109482Z             },
2026-06-22T02:23:00.5109567Z             {
2026-06-22T02:23:00.5109695Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5109782Z               "line": 46
2026-06-22T02:23:00.5109863Z             },
2026-06-22T02:23:00.5109939Z             {
2026-06-22T02:23:00.5110053Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5110131Z               "line": 97
2026-06-22T02:23:00.5110220Z             },
2026-06-22T02:23:00.5110301Z             {
2026-06-22T02:23:00.5110426Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5110511Z               "line": 125
2026-06-22T02:23:00.5110597Z             },
2026-06-22T02:23:00.5110677Z             {
2026-06-22T02:23:00.5110787Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5110876Z               "line": 207
2026-06-22T02:23:00.5110951Z             },
2026-06-22T02:23:00.5111143Z             {
2026-06-22T02:23:00.5111261Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5111438Z               "line": 231
2026-06-22T02:23:00.5111519Z             },
2026-06-22T02:23:00.5111604Z             {
2026-06-22T02:23:00.5111725Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5111805Z               "line": 467
2026-06-22T02:23:00.5111890Z             },
2026-06-22T02:23:00.5111971Z             {
2026-06-22T02:23:00.5112096Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5112182Z               "line": 25
2026-06-22T02:23:00.5112267Z             },
2026-06-22T02:23:00.5112349Z             {
2026-06-22T02:23:00.5112468Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5112553Z               "line": 120
2026-06-22T02:23:00.5112630Z             },
2026-06-22T02:23:00.5112707Z             {
2026-06-22T02:23:00.5112825Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5112920Z               "line": 148
2026-06-22T02:23:00.5113003Z             },
2026-06-22T02:23:00.5113097Z             {
2026-06-22T02:23:00.5113221Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5113303Z               "line": 165
2026-06-22T02:23:00.5113389Z             },
2026-06-22T02:23:00.5113473Z             {
2026-06-22T02:23:00.5113587Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5113678Z               "line": 180
2026-06-22T02:23:00.5113757Z             },
2026-06-22T02:23:00.5113842Z             {
2026-06-22T02:23:00.5113962Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5114038Z               "line": 198
2026-06-22T02:23:00.5114129Z             },
2026-06-22T02:23:00.5114204Z             {
2026-06-22T02:23:00.5114325Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5114410Z               "line": 207
2026-06-22T02:23:00.5114504Z             },
2026-06-22T02:23:00.5114587Z             {
2026-06-22T02:23:00.5114696Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:23:00.5114791Z               "line": 16
2026-06-22T02:23:00.5114872Z             },
2026-06-22T02:23:00.5114963Z             {
2026-06-22T02:23:00.5115106Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:23:00.5115201Z               "line": 63
2026-06-22T02:23:00.5115278Z             }
2026-06-22T02:23:00.5115359Z           ]
2026-06-22T02:23:00.5115430Z         },
2026-06-22T02:23:00.5115502Z         "int": {
2026-06-22T02:23:00.5115598Z           "complete": false,
2026-06-22T02:23:00.5115673Z           "evidence": []
2026-06-22T02:23:00.5115755Z         },
2026-06-22T02:23:00.5115836Z         "unit": {
2026-06-22T02:23:00.5115932Z           "complete": true,
2026-06-22T02:23:00.5116012Z           "evidence": [
2026-06-22T02:23:00.5116097Z             {
2026-06-22T02:23:00.5116220Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5116296Z               "line": 584
2026-06-22T02:23:00.5116380Z             },
2026-06-22T02:23:00.5116461Z             {
2026-06-22T02:23:00.5116581Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5116667Z               "line": 594
2026-06-22T02:23:00.5116742Z             },
2026-06-22T02:23:00.5116829Z             {
2026-06-22T02:23:00.5116943Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5117033Z               "line": 616
2026-06-22T02:23:00.5117114Z             },
2026-06-22T02:23:00.5117201Z             {
2026-06-22T02:23:00.5117325Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5117410Z               "line": 632
2026-06-22T02:23:00.5117497Z             },
2026-06-22T02:23:00.5117582Z             {
2026-06-22T02:23:00.5117696Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:23:00.5117778Z               "line": 690
2026-06-22T02:23:00.5117954Z             },
2026-06-22T02:23:00.5118035Z             {
2026-06-22T02:23:00.5118141Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5118311Z               "line": 472
2026-06-22T02:23:00.5118393Z             },
2026-06-22T02:23:00.5118480Z             {
2026-06-22T02:23:00.5118597Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:23:00.5118684Z               "line": 507
2026-06-22T02:23:00.5118766Z             },
2026-06-22T02:23:00.5118851Z             {
2026-06-22T02:23:00.5119045Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:23:00.5119131Z               "line": 120
2026-06-22T02:23:00.5119212Z             },
2026-06-22T02:23:00.5119297Z             {
2026-06-22T02:23:00.5119407Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:23:00.5119498Z               "line": 128
2026-06-22T02:23:00.5119573Z             }
2026-06-22T02:23:00.5119659Z           ]
2026-06-22T02:23:00.5119732Z         }
2026-06-22T02:23:00.5119832Z       }
2026-06-22T02:23:00.5119912Z     },
2026-06-22T02:23:00.5119994Z     {
2026-06-22T02:23:00.5120095Z       "id": "REQ-SUBNET-1",
2026-06-22T02:23:00.5120400Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-22T02:23:00.5120499Z       "requiredStages": [
2026-06-22T02:23:00.5120575Z         "impl",
2026-06-22T02:23:00.5120662Z         "unit"
2026-06-22T02:23:00.5120743Z       ],
2026-06-22T02:23:00.5120828Z       "stages": {
2026-06-22T02:23:00.5120909Z         "doc": {
2026-06-22T02:23:00.5120991Z           "complete": false,
2026-06-22T02:23:00.5121072Z           "evidence": []
2026-06-22T02:23:00.5121147Z         },
2026-06-22T02:23:00.5121232Z         "impl": {
2026-06-22T02:23:00.5121323Z           "complete": true,
2026-06-22T02:23:00.5121408Z           "evidence": [
2026-06-22T02:23:00.5124822Z             {
2026-06-22T02:23:00.5124984Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5125098Z               "line": 281
2026-06-22T02:23:00.5125180Z             },
2026-06-22T02:23:00.5125275Z             {
2026-06-22T02:23:00.5125408Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5125495Z               "line": 651
2026-06-22T02:23:00.5125575Z             },
2026-06-22T02:23:00.5125656Z             {
2026-06-22T02:23:00.5125757Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5125838Z               "line": 3399
2026-06-22T02:23:00.5125919Z             },
2026-06-22T02:23:00.5126000Z             {
2026-06-22T02:23:00.5126106Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5126187Z               "line": 3709
2026-06-22T02:23:00.5126266Z             },
2026-06-22T02:23:00.5126347Z             {
2026-06-22T02:23:00.5126440Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5126530Z               "line": 3728
2026-06-22T02:23:00.5126657Z             },
2026-06-22T02:23:00.5126738Z             {
2026-06-22T02:23:00.5126837Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5126926Z               "line": 3792
2026-06-22T02:23:00.5127035Z             },
2026-06-22T02:23:00.5127127Z             {
2026-06-22T02:23:00.5127227Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5127317Z               "line": 3834
2026-06-22T02:23:00.5127394Z             },
2026-06-22T02:23:00.5127480Z             {
2026-06-22T02:23:00.5127575Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5127665Z               "line": 4023
2026-06-22T02:23:00.5127747Z             },
2026-06-22T02:23:00.5127827Z             {
2026-06-22T02:23:00.5127922Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5127999Z               "line": 4093
2026-06-22T02:23:00.5128081Z             },
2026-06-22T02:23:00.5128156Z             {
2026-06-22T02:23:00.5128256Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5128338Z               "line": 4317
2026-06-22T02:23:00.5128561Z             },
2026-06-22T02:23:00.5128638Z             {
2026-06-22T02:23:00.5128838Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5128929Z               "line": 4961
2026-06-22T02:23:00.5129096Z             },
2026-06-22T02:23:00.5129177Z             {
2026-06-22T02:23:00.5129278Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.5129369Z               "line": 418
2026-06-22T02:23:00.5129472Z             }
2026-06-22T02:23:00.5129562Z           ]
2026-06-22T02:23:00.5129643Z         },
2026-06-22T02:23:00.5129725Z         "int": {
2026-06-22T02:23:00.5129819Z           "complete": false,
2026-06-22T02:23:00.5129895Z           "evidence": []
2026-06-22T02:23:00.5129982Z         },
2026-06-22T02:23:00.5130068Z         "unit": {
2026-06-22T02:23:00.5130153Z           "complete": true,
2026-06-22T02:23:00.5130234Z           "evidence": [
2026-06-22T02:23:00.5130316Z             {
2026-06-22T02:23:00.5130444Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5130539Z               "line": 1584
2026-06-22T02:23:00.5130626Z             },
2026-06-22T02:23:00.5130706Z             {
2026-06-22T02:23:00.5130792Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5130883Z               "line": 9964
2026-06-22T02:23:00.5130965Z             },
2026-06-22T02:23:00.5131045Z             {
2026-06-22T02:23:00.5131130Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5131218Z               "line": 10134
2026-06-22T02:23:00.5131303Z             },
2026-06-22T02:23:00.5131388Z             {
2026-06-22T02:23:00.5131484Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5131566Z               "line": 10141
2026-06-22T02:23:00.5131646Z             },
2026-06-22T02:23:00.5131726Z             {
2026-06-22T02:23:00.5131825Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5131917Z               "line": 10194
2026-06-22T02:23:00.5131996Z             },
2026-06-22T02:23:00.5132081Z             {
2026-06-22T02:23:00.5132167Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5132268Z               "line": 10211
2026-06-22T02:23:00.5132353Z             },
2026-06-22T02:23:00.5132434Z             {
2026-06-22T02:23:00.5132534Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5132620Z               "line": 10241
2026-06-22T02:23:00.5132700Z             },
2026-06-22T02:23:00.5132776Z             {
2026-06-22T02:23:00.5132869Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5132959Z               "line": 10357
2026-06-22T02:23:00.5133034Z             },
2026-06-22T02:23:00.5133121Z             {
2026-06-22T02:23:00.5133221Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5133302Z               "line": 10508
2026-06-22T02:23:00.5133382Z             }
2026-06-22T02:23:00.5133469Z           ]
2026-06-22T02:23:00.5133554Z         }
2026-06-22T02:23:00.5133626Z       }
2026-06-22T02:23:00.5133712Z     },
2026-06-22T02:23:00.5133779Z     {
2026-06-22T02:23:00.5133869Z       "id": "REQ-SUBNET-2",
2026-06-22T02:23:00.5134104Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-22T02:23:00.5134198Z       "requiredStages": [
2026-06-22T02:23:00.5134279Z         "impl",
2026-06-22T02:23:00.5134360Z         "unit",
2026-06-22T02:23:00.5134448Z         "int"
2026-06-22T02:23:00.5134527Z       ],
2026-06-22T02:23:00.5134612Z       "stages": {
2026-06-22T02:23:00.5134692Z         "doc": {
2026-06-22T02:23:00.5134779Z           "complete": true,
2026-06-22T02:23:00.5134868Z           "evidence": [
2026-06-22T02:23:00.5134948Z             {
2026-06-22T02:23:00.5135111Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T02:23:00.5135192Z               "line": 60
2026-06-22T02:23:00.5135272Z             }
2026-06-22T02:23:00.5135344Z           ]
2026-06-22T02:23:00.5135426Z         },
2026-06-22T02:23:00.5135516Z         "impl": {
2026-06-22T02:23:00.5135712Z           "complete": true,
2026-06-22T02:23:00.5135792Z           "evidence": [
2026-06-22T02:23:00.5135968Z             {
2026-06-22T02:23:00.5136083Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.5136164Z               "line": 980
2026-06-22T02:23:00.5136250Z             },
2026-06-22T02:23:00.5136331Z             {
2026-06-22T02:23:00.5136441Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.5136536Z               "line": 2000
2026-06-22T02:23:00.5136612Z             },
2026-06-22T02:23:00.5136685Z             {
2026-06-22T02:23:00.5136803Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5136884Z               "line": 633
2026-06-22T02:23:00.5136961Z             },
2026-06-22T02:23:00.5137038Z             {
2026-06-22T02:23:00.5137156Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:23:00.5137240Z               "line": 817
2026-06-22T02:23:00.5137322Z             },
2026-06-22T02:23:00.5137411Z             {
2026-06-22T02:23:00.5137538Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5137634Z               "line": 26
2026-06-22T02:23:00.5137716Z             },
2026-06-22T02:23:00.5137796Z             {
2026-06-22T02:23:00.5137915Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5138007Z               "line": 60
2026-06-22T02:23:00.5138078Z             },
2026-06-22T02:23:00.5138163Z             {
2026-06-22T02:23:00.5138279Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5138364Z               "line": 168
2026-06-22T02:23:00.5138445Z             },
2026-06-22T02:23:00.5138530Z             {
2026-06-22T02:23:00.5138636Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5138717Z               "line": 295
2026-06-22T02:23:00.5138793Z             },
2026-06-22T02:23:00.5138874Z             {
2026-06-22T02:23:00.5139055Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5139145Z               "line": 417
2026-06-22T02:23:00.5139233Z             },
2026-06-22T02:23:00.5139313Z             {
2026-06-22T02:23:00.5139437Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:23:00.5139509Z               "line": 252
2026-06-22T02:23:00.5139590Z             },
2026-06-22T02:23:00.5139670Z             {
2026-06-22T02:23:00.5139766Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5139853Z               "line": 3755
2026-06-22T02:23:00.5139934Z             },
2026-06-22T02:23:00.5140013Z             {
2026-06-22T02:23:00.5140117Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5140199Z               "line": 4256
2026-06-22T02:23:00.5140280Z             },
2026-06-22T02:23:00.5140351Z             {
2026-06-22T02:23:00.5140451Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5140532Z               "line": 4892
2026-06-22T02:23:00.5140623Z             }
2026-06-22T02:23:00.5140704Z           ]
2026-06-22T02:23:00.5140775Z         },
2026-06-22T02:23:00.5140852Z         "int": {
2026-06-22T02:23:00.5140942Z           "complete": true,
2026-06-22T02:23:00.5141019Z           "evidence": [
2026-06-22T02:23:00.5141100Z             {
2026-06-22T02:23:00.5141224Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-22T02:23:00.5141310Z               "line": 22
2026-06-22T02:23:00.5141390Z             },
2026-06-22T02:23:00.5141468Z             {
2026-06-22T02:23:00.5141586Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5141667Z               "line": 645
2026-06-22T02:23:00.5141743Z             },
2026-06-22T02:23:00.5141825Z             {
2026-06-22T02:23:00.5141938Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5142024Z               "line": 887
2026-06-22T02:23:00.5142092Z             }
2026-06-22T02:23:00.5142169Z           ]
2026-06-22T02:23:00.5142244Z         },
2026-06-22T02:23:00.5142438Z         "unit": {
2026-06-22T02:23:00.5142529Z           "complete": true,
2026-06-22T02:23:00.5142612Z           "evidence": [
2026-06-22T02:23:00.5142794Z             {
2026-06-22T02:23:00.5142899Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5142994Z               "line": 586
2026-06-22T02:23:00.5143075Z             },
2026-06-22T02:23:00.5143152Z             {
2026-06-22T02:23:00.5143256Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5143341Z               "line": 10004
2026-06-22T02:23:00.5143419Z             },
2026-06-22T02:23:00.5143500Z             {
2026-06-22T02:23:00.5143599Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5143686Z               "line": 10715
2026-06-22T02:23:00.5143772Z             }
2026-06-22T02:23:00.5143853Z           ]
2026-06-22T02:23:00.5143933Z         }
2026-06-22T02:23:00.5144010Z       }
2026-06-22T02:23:00.5144092Z     },
2026-06-22T02:23:00.5144172Z     {
2026-06-22T02:23:00.5144277Z       "id": "REQ-SUBNET-3",
2026-06-22T02:23:00.5144539Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-22T02:23:00.5144635Z       "requiredStages": [
2026-06-22T02:23:00.5144721Z         "impl",
2026-06-22T02:23:00.5144800Z         "unit"
2026-06-22T02:23:00.5144882Z       ],
2026-06-22T02:23:00.5144960Z       "stages": {
2026-06-22T02:23:00.5145036Z         "doc": {
2026-06-22T02:23:00.5145129Z           "complete": false,
2026-06-22T02:23:00.5145210Z           "evidence": []
2026-06-22T02:23:00.5145291Z         },
2026-06-22T02:23:00.5145372Z         "impl": {
2026-06-22T02:23:00.5145460Z           "complete": true,
2026-06-22T02:23:00.5145546Z           "evidence": [
2026-06-22T02:23:00.5145627Z             {
2026-06-22T02:23:00.5145762Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5145837Z               "line": 152
2026-06-22T02:23:00.5145918Z             },
2026-06-22T02:23:00.5146014Z             {
2026-06-22T02:23:00.5146132Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5146233Z               "line": 299
2026-06-22T02:23:00.5146310Z             },
2026-06-22T02:23:00.5146396Z             {
2026-06-22T02:23:00.5146519Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5146601Z               "line": 443
2026-06-22T02:23:00.5146686Z             },
2026-06-22T02:23:00.5146767Z             {
2026-06-22T02:23:00.5146892Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5146977Z               "line": 532
2026-06-22T02:23:00.5147062Z             },
2026-06-22T02:23:00.5147144Z             {
2026-06-22T02:23:00.5147260Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5147349Z               "line": 125
2026-06-22T02:23:00.5147425Z             },
2026-06-22T02:23:00.5147512Z             {
2026-06-22T02:23:00.5147617Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5147706Z               "line": 253
2026-06-22T02:23:00.5147795Z             },
2026-06-22T02:23:00.5147882Z             {
2026-06-22T02:23:00.5147999Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5148080Z               "line": 264
2026-06-22T02:23:00.5148170Z             },
2026-06-22T02:23:00.5148252Z             {
2026-06-22T02:23:00.5148361Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5148437Z               "line": 285
2026-06-22T02:23:00.5148519Z             },
2026-06-22T02:23:00.5148600Z             {
2026-06-22T02:23:00.5148714Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5148800Z               "line": 621
2026-06-22T02:23:00.5148872Z             },
2026-06-22T02:23:00.5149024Z             {
2026-06-22T02:23:00.5149139Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5149220Z               "line": 680
2026-06-22T02:23:00.5149300Z             },
2026-06-22T02:23:00.5149497Z             {
2026-06-22T02:23:00.5149625Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.5149807Z               "line": 61
2026-06-22T02:23:00.5149887Z             },
2026-06-22T02:23:00.5149968Z             {
2026-06-22T02:23:00.5150083Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.5150165Z               "line": 90
2026-06-22T02:23:00.5150244Z             },
2026-06-22T02:23:00.5150326Z             {
2026-06-22T02:23:00.5150442Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.5150526Z               "line": 125
2026-06-22T02:23:00.5150602Z             },
2026-06-22T02:23:00.5150682Z             {
2026-06-22T02:23:00.5150787Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T02:23:00.5150874Z               "line": 9
2026-06-22T02:23:00.5150958Z             },
2026-06-22T02:23:00.5151039Z             {
2026-06-22T02:23:00.5151141Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5151240Z               "line": 4093
2026-06-22T02:23:00.5151316Z             },
2026-06-22T02:23:00.5151403Z             {
2026-06-22T02:23:00.5151507Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.5151593Z               "line": 445
2026-06-22T02:23:00.5151669Z             }
2026-06-22T02:23:00.5151741Z           ]
2026-06-22T02:23:00.5151822Z         },
2026-06-22T02:23:00.5151903Z         "int": {
2026-06-22T02:23:00.5151994Z           "complete": false,
2026-06-22T02:23:00.5152080Z           "evidence": []
2026-06-22T02:23:00.5152151Z         },
2026-06-22T02:23:00.5152232Z         "unit": {
2026-06-22T02:23:00.5152309Z           "complete": true,
2026-06-22T02:23:00.5152390Z           "evidence": [
2026-06-22T02:23:00.5152466Z             {
2026-06-22T02:23:00.5152589Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5152677Z               "line": 1356
2026-06-22T02:23:00.5152762Z             },
2026-06-22T02:23:00.5152855Z             {
2026-06-22T02:23:00.5152970Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5153061Z               "line": 1713
2026-06-22T02:23:00.5153149Z             },
2026-06-22T02:23:00.5153230Z             {
2026-06-22T02:23:00.5153344Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.5153422Z               "line": 892
2026-06-22T02:23:00.5153506Z             },
2026-06-22T02:23:00.5153578Z             {
2026-06-22T02:23:00.5153693Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5153779Z               "line": 991
2026-06-22T02:23:00.5153859Z             },
2026-06-22T02:23:00.5153941Z             {
2026-06-22T02:23:00.5154050Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5154136Z               "line": 1041
2026-06-22T02:23:00.5154217Z             },
2026-06-22T02:23:00.5154299Z             {
2026-06-22T02:23:00.5154408Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5154507Z               "line": 1100
2026-06-22T02:23:00.5154604Z             },
2026-06-22T02:23:00.5154685Z             {
2026-06-22T02:23:00.5154803Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:23:00.5154885Z               "line": 234
2026-06-22T02:23:00.5154972Z             },
2026-06-22T02:23:00.5155055Z             {
2026-06-22T02:23:00.5155171Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T02:23:00.5155267Z               "line": 49
2026-06-22T02:23:00.5155347Z             },
2026-06-22T02:23:00.5155423Z             {
2026-06-22T02:23:00.5155520Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5155620Z               "line": 10357
2026-06-22T02:23:00.5155699Z             },
2026-06-22T02:23:00.5155785Z             {
2026-06-22T02:23:00.5155885Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5155961Z               "line": 10463
2026-06-22T02:23:00.5156044Z             },
2026-06-22T02:23:00.5156221Z             {
2026-06-22T02:23:00.5156327Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5156483Z               "line": 10681
2026-06-22T02:23:00.5156565Z             }
2026-06-22T02:23:00.5156651Z           ]
2026-06-22T02:23:00.5156736Z         }
2026-06-22T02:23:00.5156818Z       }
2026-06-22T02:23:00.5156899Z     },
2026-06-22T02:23:00.5156984Z     {
2026-06-22T02:23:00.5157074Z       "id": "REQ-SUBNET-4",
2026-06-22T02:23:00.5157360Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-22T02:23:00.5157457Z       "requiredStages": [
2026-06-22T02:23:00.5157542Z         "impl",
2026-06-22T02:23:00.5157627Z         "unit"
2026-06-22T02:23:00.5157704Z       ],
2026-06-22T02:23:00.5157796Z       "stages": {
2026-06-22T02:23:00.5157876Z         "doc": {
2026-06-22T02:23:00.5157971Z           "complete": true,
2026-06-22T02:23:00.5158062Z           "evidence": [
2026-06-22T02:23:00.5158154Z             {
2026-06-22T02:23:00.5158314Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T02:23:00.5158404Z               "line": 60
2026-06-22T02:23:00.5158490Z             }
2026-06-22T02:23:00.5158573Z           ]
2026-06-22T02:23:00.5158654Z         },
2026-06-22T02:23:00.5158745Z         "impl": {
2026-06-22T02:23:00.5158831Z           "complete": true,
2026-06-22T02:23:00.5158926Z           "evidence": [
2026-06-22T02:23:00.5159084Z             {
2026-06-22T02:23:00.5159194Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5159288Z               "line": 3399
2026-06-22T02:23:00.5159374Z             },
2026-06-22T02:23:00.5159460Z             {
2026-06-22T02:23:00.5159560Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5159655Z               "line": 4859
2026-06-22T02:23:00.5159733Z             },
2026-06-22T02:23:00.5159822Z             {
2026-06-22T02:23:00.5159917Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5160013Z               "line": 4892
2026-06-22T02:23:00.5160099Z             }
2026-06-22T02:23:00.5160180Z           ]
2026-06-22T02:23:00.5160275Z         },
2026-06-22T02:23:00.5160358Z         "int": {
2026-06-22T02:23:00.5160452Z           "complete": false,
2026-06-22T02:23:00.5160538Z           "evidence": []
2026-06-22T02:23:00.5160619Z         },
2026-06-22T02:23:00.5160706Z         "unit": {
2026-06-22T02:23:00.5160799Z           "complete": true,
2026-06-22T02:23:00.5160891Z           "evidence": [
2026-06-22T02:23:00.5160968Z             {
2026-06-22T02:23:00.5161072Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5161152Z               "line": 10120
2026-06-22T02:23:00.5161237Z             },
2026-06-22T02:23:00.5161319Z             {
2026-06-22T02:23:00.5161415Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5161505Z               "line": 10194
2026-06-22T02:23:00.5161586Z             }
2026-06-22T02:23:00.5161667Z           ]
2026-06-22T02:23:00.5161753Z         }
2026-06-22T02:23:00.5161829Z       }
2026-06-22T02:23:00.5161915Z     },
2026-06-22T02:23:00.5161992Z     {
2026-06-22T02:23:00.5162077Z       "id": "REQ-SUBNET-5",
2026-06-22T02:23:00.5163222Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-22T02:23:00.5163327Z       "requiredStages": [
2026-06-22T02:23:00.5163406Z         "impl",
2026-06-22T02:23:00.5163487Z         "unit",
2026-06-22T02:23:00.5163573Z         "int"
2026-06-22T02:23:00.5163653Z       ],
2026-06-22T02:23:00.5163737Z       "stages": {
2026-06-22T02:23:00.5163814Z         "doc": {
2026-06-22T02:23:00.5163904Z           "complete": false,
2026-06-22T02:23:00.5163996Z           "evidence": []
2026-06-22T02:23:00.5164181Z         },
2026-06-22T02:23:00.5164286Z         "impl": {
2026-06-22T02:23:00.5164530Z           "complete": true,
2026-06-22T02:23:00.5164620Z           "evidence": [
2026-06-22T02:23:00.5164701Z             {
2026-06-22T02:23:00.5164826Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:23:00.5164911Z               "line": 128
2026-06-22T02:23:00.5164983Z             },
2026-06-22T02:23:00.5165067Z             {
2026-06-22T02:23:00.5165183Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:23:00.5165264Z               "line": 413
2026-06-22T02:23:00.5165345Z             },
2026-06-22T02:23:00.5165426Z             {
2026-06-22T02:23:00.5165541Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5165625Z               "line": 74
2026-06-22T02:23:00.5165702Z             },
2026-06-22T02:23:00.5165775Z             {
2026-06-22T02:23:00.5165898Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.5165988Z               "line": 332
2026-06-22T02:23:00.5166070Z             },
2026-06-22T02:23:00.5166161Z             {
2026-06-22T02:23:00.5166264Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.5166354Z               "line": 621
2026-06-22T02:23:00.5166435Z             },
2026-06-22T02:23:00.5166521Z             {
2026-06-22T02:23:00.5166642Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:23:00.5166729Z               "line": 31
2026-06-22T02:23:00.5166811Z             },
2026-06-22T02:23:00.5166892Z             {
2026-06-22T02:23:00.5167010Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:23:00.5167097Z               "line": 50
2026-06-22T02:23:00.5167172Z             },
2026-06-22T02:23:00.5167253Z             {
2026-06-22T02:23:00.5167368Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:23:00.5167459Z               "line": 69
2026-06-22T02:23:00.5167535Z             },
2026-06-22T02:23:00.5167625Z             {
2026-06-22T02:23:00.5167736Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:23:00.5167839Z               "line": 113
2026-06-22T02:23:00.5167916Z             },
2026-06-22T02:23:00.5167997Z             {
2026-06-22T02:23:00.5168121Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:23:00.5168207Z               "line": 25
2026-06-22T02:23:00.5168293Z             },
2026-06-22T02:23:00.5168370Z             {
2026-06-22T02:23:00.5168492Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:23:00.5168579Z               "line": 34
2026-06-22T02:23:00.5168656Z             },
2026-06-22T02:23:00.5168742Z             {
2026-06-22T02:23:00.5168854Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:23:00.5169021Z               "line": 17
2026-06-22T02:23:00.5169110Z             },
2026-06-22T02:23:00.5169191Z             {
2026-06-22T02:23:00.5169296Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5169406Z               "line": 4817
2026-06-22T02:23:00.5169510Z             },
2026-06-22T02:23:00.5169601Z             {
2026-06-22T02:23:00.5169711Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:23:00.5169801Z               "line": 419
2026-06-22T02:23:00.5169881Z             }
2026-06-22T02:23:00.5169964Z           ]
2026-06-22T02:23:00.5170044Z         },
2026-06-22T02:23:00.5170120Z         "int": {
2026-06-22T02:23:00.5170201Z           "complete": true,
2026-06-22T02:23:00.5170283Z           "evidence": [
2026-06-22T02:23:00.5170364Z             {
2026-06-22T02:23:00.5170487Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.5170564Z               "line": 821
2026-06-22T02:23:00.5170646Z             }
2026-06-22T02:23:00.5170731Z           ]
2026-06-22T02:23:00.5170816Z         },
2026-06-22T02:23:00.5170894Z         "unit": {
2026-06-22T02:23:00.5170975Z           "complete": true,
2026-06-22T02:23:00.5171174Z           "evidence": [
2026-06-22T02:23:00.5171252Z             {
2026-06-22T02:23:00.5171364Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.5171542Z               "line": 341
2026-06-22T02:23:00.5171614Z             },
2026-06-22T02:23:00.5171693Z             {
2026-06-22T02:23:00.5171802Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:23:00.5171889Z               "line": 1115
2026-06-22T02:23:00.5171975Z             },
2026-06-22T02:23:00.5172060Z             {
2026-06-22T02:23:00.5172179Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:23:00.5172256Z               "line": 151
2026-06-22T02:23:00.5172337Z             },
2026-06-22T02:23:00.5172417Z             {
2026-06-22T02:23:00.5172533Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:23:00.5172614Z               "line": 61
2026-06-22T02:23:00.5172694Z             },
2026-06-22T02:23:00.5172780Z             {
2026-06-22T02:23:00.5172885Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:23:00.5172985Z               "line": 111
2026-06-22T02:23:00.5173066Z             },
2026-06-22T02:23:00.5173148Z             {
2026-06-22T02:23:00.5173271Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:23:00.5173352Z               "line": 138
2026-06-22T02:23:00.5173439Z             },
2026-06-22T02:23:00.5173506Z             {
2026-06-22T02:23:00.5173624Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:23:00.5173705Z               "line": 148
2026-06-22T02:23:00.5173787Z             },
2026-06-22T02:23:00.5173872Z             {
2026-06-22T02:23:00.5173967Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5174057Z               "line": 10021
2026-06-22T02:23:00.5174133Z             }
2026-06-22T02:23:00.5174251Z           ]
2026-06-22T02:23:00.5174364Z         }
2026-06-22T02:23:00.5174436Z       }
2026-06-22T02:23:00.5174513Z     },
2026-06-22T02:23:00.5174598Z     {
2026-06-22T02:23:00.5174693Z       "id": "REQ-SUBNET-6",
2026-06-22T02:23:00.5175361Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-22T02:23:00.5175466Z       "requiredStages": [
2026-06-22T02:23:00.5175557Z         "impl",
2026-06-22T02:23:00.5175632Z         "unit"
2026-06-22T02:23:00.5175720Z       ],
2026-06-22T02:23:00.5175795Z       "stages": {
2026-06-22T02:23:00.5175872Z         "doc": {
2026-06-22T02:23:00.5175961Z           "complete": false,
2026-06-22T02:23:00.5176053Z           "evidence": []
2026-06-22T02:23:00.5176138Z         },
2026-06-22T02:23:00.5176220Z         "impl": {
2026-06-22T02:23:00.5176310Z           "complete": true,
2026-06-22T02:23:00.5176392Z           "evidence": [
2026-06-22T02:23:00.5176467Z             {
2026-06-22T02:23:00.5176577Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5176669Z               "line": 254
2026-06-22T02:23:00.5176759Z             },
2026-06-22T02:23:00.5176838Z             {
2026-06-22T02:23:00.5176938Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5177019Z               "line": 4475
2026-06-22T02:23:00.5177099Z             },
2026-06-22T02:23:00.5177184Z             {
2026-06-22T02:23:00.5177289Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5177376Z               "line": 4492
2026-06-22T02:23:00.5177456Z             },
2026-06-22T02:23:00.5177541Z             {
2026-06-22T02:23:00.5177637Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5177728Z               "line": 4545
2026-06-22T02:23:00.5177818Z             },
2026-06-22T02:23:00.5177889Z             {
2026-06-22T02:23:00.5177976Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5178057Z               "line": 4568
2026-06-22T02:23:00.5178147Z             }
2026-06-22T02:23:00.5178315Z           ]
2026-06-22T02:23:00.5178395Z         },
2026-06-22T02:23:00.5178480Z         "int": {
2026-06-22T02:23:00.5178639Z           "complete": false,
2026-06-22T02:23:00.5178728Z           "evidence": []
2026-06-22T02:23:00.5178809Z         },
2026-06-22T02:23:00.5178897Z         "unit": {
2026-06-22T02:23:00.5179052Z           "complete": true,
2026-06-22T02:23:00.5179134Z           "evidence": [
2026-06-22T02:23:00.5179217Z             {
2026-06-22T02:23:00.5179316Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5179405Z               "line": 10035
2026-06-22T02:23:00.5179485Z             },
2026-06-22T02:23:00.5179562Z             {
2026-06-22T02:23:00.5179661Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5179746Z               "line": 10068
2026-06-22T02:23:00.5179831Z             },
2026-06-22T02:23:00.5179913Z             {
2026-06-22T02:23:00.5180004Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5180098Z               "line": 10077
2026-06-22T02:23:00.5180180Z             }
2026-06-22T02:23:00.5180261Z           ]
2026-06-22T02:23:00.5180352Z         }
2026-06-22T02:23:00.5180437Z       }
2026-06-22T02:23:00.5180514Z     },
2026-06-22T02:23:00.5180595Z     {
2026-06-22T02:23:00.5180680Z       "id": "REQ-SUBNET-7",
2026-06-22T02:23:00.5182272Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-22T02:23:00.5182376Z       "requiredStages": [
2026-06-22T02:23:00.5182458Z         "impl",
2026-06-22T02:23:00.5182540Z         "unit"
2026-06-22T02:23:00.5182620Z       ],
2026-06-22T02:23:00.5182701Z       "stages": {
2026-06-22T02:23:00.5182793Z         "doc": {
2026-06-22T02:23:00.5182878Z           "complete": false,
2026-06-22T02:23:00.5182958Z           "evidence": []
2026-06-22T02:23:00.5183035Z         },
2026-06-22T02:23:00.5183117Z         "impl": {
2026-06-22T02:23:00.5183202Z           "complete": true,
2026-06-22T02:23:00.5183278Z           "evidence": [
2026-06-22T02:23:00.5183355Z             {
2026-06-22T02:23:00.5183479Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:23:00.5183560Z               "line": 17
2026-06-22T02:23:00.5183645Z             },
2026-06-22T02:23:00.5183727Z             {
2026-06-22T02:23:00.5183841Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5183927Z               "line": 103
2026-06-22T02:23:00.5184008Z             },
2026-06-22T02:23:00.5184094Z             {
2026-06-22T02:23:00.5184212Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:23:00.5184294Z               "line": 312
2026-06-22T02:23:00.5184372Z             },
2026-06-22T02:23:00.5184452Z             {
2026-06-22T02:23:00.5184579Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:23:00.5184664Z               "line": 131
2026-06-22T02:23:00.5184750Z             },
2026-06-22T02:23:00.5184834Z             {
2026-06-22T02:23:00.5184958Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5185054Z               "line": 160
2026-06-22T02:23:00.5185134Z             },
2026-06-22T02:23:00.5185215Z             {
2026-06-22T02:23:00.5185330Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5185416Z               "line": 447
2026-06-22T02:23:00.5185501Z             },
2026-06-22T02:23:00.5185582Z             {
2026-06-22T02:23:00.5185703Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5185783Z               "line": 670
2026-06-22T02:23:00.5185984Z             },
2026-06-22T02:23:00.5186065Z             {
2026-06-22T02:23:00.5186183Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5186374Z               "line": 710
2026-06-22T02:23:00.5186455Z             },
2026-06-22T02:23:00.5186546Z             {
2026-06-22T02:23:00.5186666Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5186755Z               "line": 766
2026-06-22T02:23:00.5186841Z             },
2026-06-22T02:23:00.5186919Z             {
2026-06-22T02:23:00.5187037Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.5187123Z               "line": 136
2026-06-22T02:23:00.5187209Z             },
2026-06-22T02:23:00.5187291Z             {
2026-06-22T02:23:00.5187413Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5187503Z               "line": 139
2026-06-22T02:23:00.5187579Z             }
2026-06-22T02:23:00.5187659Z           ]
2026-06-22T02:23:00.5187749Z         },
2026-06-22T02:23:00.5187834Z         "int": {
2026-06-22T02:23:00.5187926Z           "complete": false,
2026-06-22T02:23:00.5188030Z           "evidence": []
2026-06-22T02:23:00.5188115Z         },
2026-06-22T02:23:00.5188188Z         "unit": {
2026-06-22T02:23:00.5188279Z           "complete": true,
2026-06-22T02:23:00.5188355Z           "evidence": [
2026-06-22T02:23:00.5188440Z             {
2026-06-22T02:23:00.5191273Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:23:00.5191380Z               "line": 136
2026-06-22T02:23:00.5191465Z             },
2026-06-22T02:23:00.5191546Z             {
2026-06-22T02:23:00.5191674Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:23:00.5191762Z               "line": 156
2026-06-22T02:23:00.5191836Z             },
2026-06-22T02:23:00.5191922Z             {
2026-06-22T02:23:00.5192057Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5192151Z               "line": 987
2026-06-22T02:23:00.5192246Z             },
2026-06-22T02:23:00.5192324Z             {
2026-06-22T02:23:00.5192461Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:23:00.5192556Z               "line": 1009
2026-06-22T02:23:00.5192639Z             },
2026-06-22T02:23:00.5192715Z             {
2026-06-22T02:23:00.5192837Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:23:00.5192922Z               "line": 1419
2026-06-22T02:23:00.5193004Z             },
2026-06-22T02:23:00.5193091Z             {
2026-06-22T02:23:00.5193204Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:23:00.5193285Z               "line": 1036
2026-06-22T02:23:00.5193367Z             }
2026-06-22T02:23:00.5193443Z           ]
2026-06-22T02:23:00.5193523Z         }
2026-06-22T02:23:00.5193610Z       }
2026-06-22T02:23:00.5193691Z     },
2026-06-22T02:23:00.5193772Z     {
2026-06-22T02:23:00.5193867Z       "id": "REQ-SUBNET-8",
2026-06-22T02:23:00.5194983Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-22T02:23:00.5195096Z       "requiredStages": [
2026-06-22T02:23:00.5195181Z         "impl",
2026-06-22T02:23:00.5195263Z         "unit"
2026-06-22T02:23:00.5195352Z       ],
2026-06-22T02:23:00.5195433Z       "stages": {
2026-06-22T02:23:00.5195518Z         "doc": {
2026-06-22T02:23:00.5195599Z           "complete": false,
2026-06-22T02:23:00.5195690Z           "evidence": []
2026-06-22T02:23:00.5195766Z         },
2026-06-22T02:23:00.5195843Z         "impl": {
2026-06-22T02:23:00.5195929Z           "complete": true,
2026-06-22T02:23:00.5196014Z           "evidence": [
2026-06-22T02:23:00.5196100Z             {
2026-06-22T02:23:00.5196348Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5196442Z               "line": 3835
2026-06-22T02:23:00.5196663Z             },
2026-06-22T02:23:00.5196739Z             {
2026-06-22T02:23:00.5196835Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5196925Z               "line": 3864
2026-06-22T02:23:00.5197006Z             },
2026-06-22T02:23:00.5197086Z             {
2026-06-22T02:23:00.5197188Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5197273Z               "line": 3881
2026-06-22T02:23:00.5197354Z             },
2026-06-22T02:23:00.5197436Z             {
2026-06-22T02:23:00.5197531Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5197616Z               "line": 3904
2026-06-22T02:23:00.5197688Z             },
2026-06-22T02:23:00.5197769Z             {
2026-06-22T02:23:00.5197870Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5197954Z               "line": 4318
2026-06-22T02:23:00.5198034Z             }
2026-06-22T02:23:00.5198116Z           ]
2026-06-22T02:23:00.5198201Z         },
2026-06-22T02:23:00.5198271Z         "int": {
2026-06-22T02:23:00.5198366Z           "complete": false,
2026-06-22T02:23:00.5198448Z           "evidence": []
2026-06-22T02:23:00.5198534Z         },
2026-06-22T02:23:00.5198619Z         "unit": {
2026-06-22T02:23:00.5198705Z           "complete": true,
2026-06-22T02:23:00.5198796Z           "evidence": [
2026-06-22T02:23:00.5198877Z             {
2026-06-22T02:23:00.5199063Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5199144Z               "line": 10225
2026-06-22T02:23:00.5199230Z             },
2026-06-22T02:23:00.5199309Z             {
2026-06-22T02:23:00.5199407Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5199496Z               "line": 10241
2026-06-22T02:23:00.5199577Z             }
2026-06-22T02:23:00.5199658Z           ]
2026-06-22T02:23:00.5199740Z         }
2026-06-22T02:23:00.5199821Z       }
2026-06-22T02:23:00.5199906Z     },
2026-06-22T02:23:00.5199993Z     {
2026-06-22T02:23:00.5200084Z       "id": "REQ-TERM-1",
2026-06-22T02:23:00.5200259Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-22T02:23:00.5200356Z       "requiredStages": [
2026-06-22T02:23:00.5200437Z         "impl",
2026-06-22T02:23:00.5200521Z         "unit"
2026-06-22T02:23:00.5200596Z       ],
2026-06-22T02:23:00.5200673Z       "stages": {
2026-06-22T02:23:00.5200758Z         "doc": {
2026-06-22T02:23:00.5200843Z           "complete": false,
2026-06-22T02:23:00.5200933Z           "evidence": []
2026-06-22T02:23:00.5201009Z         },
2026-06-22T02:23:00.5201091Z         "impl": {
2026-06-22T02:23:00.5201171Z           "complete": true,
2026-06-22T02:23:00.5201257Z           "evidence": [
2026-06-22T02:23:00.5201334Z             {
2026-06-22T02:23:00.5201449Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:23:00.5201528Z               "line": 59
2026-06-22T02:23:00.5201610Z             },
2026-06-22T02:23:00.5201687Z             {
2026-06-22T02:23:00.5201792Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:23:00.5201876Z               "line": 234
2026-06-22T02:23:00.5201954Z             },
2026-06-22T02:23:00.5202030Z             {
2026-06-22T02:23:00.5202144Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:23:00.5202221Z               "line": 100
2026-06-22T02:23:00.5202302Z             }
2026-06-22T02:23:00.5202383Z           ]
2026-06-22T02:23:00.5202459Z         },
2026-06-22T02:23:00.5202549Z         "int": {
2026-06-22T02:23:00.5202627Z           "complete": false,
2026-06-22T02:23:00.5202711Z           "evidence": []
2026-06-22T02:23:00.5202788Z         },
2026-06-22T02:23:00.5202874Z         "unit": {
2026-06-22T02:23:00.5202956Z           "complete": true,
2026-06-22T02:23:00.5203045Z           "evidence": [
2026-06-22T02:23:00.5203121Z             {
2026-06-22T02:23:00.5203233Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:23:00.5203421Z               "line": 24
2026-06-22T02:23:00.5203506Z             },
2026-06-22T02:23:00.5203588Z             {
2026-06-22T02:23:00.5203793Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:23:00.5203869Z               "line": 56
2026-06-22T02:23:00.5203951Z             }
2026-06-22T02:23:00.5204032Z           ]
2026-06-22T02:23:00.5204107Z         }
2026-06-22T02:23:00.5204189Z       }
2026-06-22T02:23:00.5204275Z     },
2026-06-22T02:23:00.5204342Z     {
2026-06-22T02:23:00.5204431Z       "id": "REQ-TERM-2",
2026-06-22T02:23:00.5204604Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-22T02:23:00.5204694Z       "requiredStages": [
2026-06-22T02:23:00.5204770Z         "impl",
2026-06-22T02:23:00.5204852Z         "unit"
2026-06-22T02:23:00.5204937Z       ],
2026-06-22T02:23:00.5205013Z       "stages": {
2026-06-22T02:23:00.5205090Z         "doc": {
2026-06-22T02:23:00.5205182Z           "complete": false,
2026-06-22T02:23:00.5205275Z           "evidence": []
2026-06-22T02:23:00.5205352Z         },
2026-06-22T02:23:00.5205428Z         "impl": {
2026-06-22T02:23:00.5205525Z           "complete": true,
2026-06-22T02:23:00.5205609Z           "evidence": [
2026-06-22T02:23:00.5205694Z             {
2026-06-22T02:23:00.5205809Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:23:00.5205898Z               "line": 117
2026-06-22T02:23:00.5205983Z             },
2026-06-22T02:23:00.5206058Z             {
2026-06-22T02:23:00.5206164Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:23:00.5206250Z               "line": 127
2026-06-22T02:23:00.5206321Z             }
2026-06-22T02:23:00.5206403Z           ]
2026-06-22T02:23:00.5206484Z         },
2026-06-22T02:23:00.5206556Z         "int": {
2026-06-22T02:23:00.5206641Z           "complete": false,
2026-06-22T02:23:00.5206722Z           "evidence": []
2026-06-22T02:23:00.5206808Z         },
2026-06-22T02:23:00.5206889Z         "unit": {
2026-06-22T02:23:00.5206984Z           "complete": true,
2026-06-22T02:23:00.5207071Z           "evidence": [
2026-06-22T02:23:00.5207161Z             {
2026-06-22T02:23:00.5207279Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T02:23:00.5207361Z               "line": 46
2026-06-22T02:23:00.5207447Z             },
2026-06-22T02:23:00.5207528Z             {
2026-06-22T02:23:00.5207637Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T02:23:00.5207715Z               "line": 77
2026-06-22T02:23:00.5207800Z             }
2026-06-22T02:23:00.5207871Z           ]
2026-06-22T02:23:00.5207952Z         }
2026-06-22T02:23:00.5208034Z       }
2026-06-22T02:23:00.5208105Z     },
2026-06-22T02:23:00.5208190Z     {
2026-06-22T02:23:00.5208277Z       "id": "REQ-TERM-3",
2026-06-22T02:23:00.5208416Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-22T02:23:00.5208505Z       "requiredStages": [
2026-06-22T02:23:00.5208589Z         "impl",
2026-06-22T02:23:00.5208671Z         "unit"
2026-06-22T02:23:00.5208756Z       ],
2026-06-22T02:23:00.5208841Z       "stages": {
2026-06-22T02:23:00.5208921Z         "doc": {
2026-06-22T02:23:00.5209065Z           "complete": false,
2026-06-22T02:23:00.5209141Z           "evidence": []
2026-06-22T02:23:00.5209221Z         },
2026-06-22T02:23:00.5209303Z         "impl": {
2026-06-22T02:23:00.5209390Z           "complete": true,
2026-06-22T02:23:00.5209475Z           "evidence": [
2026-06-22T02:23:00.5209560Z             {
2026-06-22T02:23:00.5209671Z               "path": "crates/spt-term/src/stream.rs",
2026-06-22T02:23:00.5209752Z               "line": 71
2026-06-22T02:23:00.5209832Z             }
2026-06-22T02:23:00.5209909Z           ]
2026-06-22T02:23:00.5209995Z         },
2026-06-22T02:23:00.5210076Z         "int": {
2026-06-22T02:23:00.5210152Z           "complete": false,
2026-06-22T02:23:00.5210233Z           "evidence": []
2026-06-22T02:23:00.5210305Z         },
2026-06-22T02:23:00.5210390Z         "unit": {
2026-06-22T02:23:00.5210582Z           "complete": true,
2026-06-22T02:23:00.5210668Z           "evidence": [
2026-06-22T02:23:00.5210748Z             {
2026-06-22T02:23:00.5210963Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T02:23:00.5211048Z               "line": 37
2026-06-22T02:23:00.5211123Z             },
2026-06-22T02:23:00.5211204Z             {
2026-06-22T02:23:00.5211314Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T02:23:00.5211403Z               "line": 67
2026-06-22T02:23:00.5211473Z             }
2026-06-22T02:23:00.5211555Z           ]
2026-06-22T02:23:00.5211628Z         }
2026-06-22T02:23:00.5211708Z       }
2026-06-22T02:23:00.5211778Z     },
2026-06-22T02:23:00.5211855Z     {
2026-06-22T02:23:00.5211942Z       "id": "REQ-TERM-4",
2026-06-22T02:23:00.5212408Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-22T02:23:00.5212505Z       "requiredStages": [
2026-06-22T02:23:00.5212585Z         "impl",
2026-06-22T02:23:00.5212671Z         "unit",
2026-06-22T02:23:00.5212756Z         "int"
2026-06-22T02:23:00.5212839Z       ],
2026-06-22T02:23:00.5212919Z       "stages": {
2026-06-22T02:23:00.5213000Z         "doc": {
2026-06-22T02:23:00.5213086Z           "complete": false,
2026-06-22T02:23:00.5213168Z           "evidence": []
2026-06-22T02:23:00.5213248Z         },
2026-06-22T02:23:00.5213329Z         "impl": {
2026-06-22T02:23:00.5213415Z           "complete": true,
2026-06-22T02:23:00.5213502Z           "evidence": [
2026-06-22T02:23:00.5213586Z             {
2026-06-22T02:23:00.5213696Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5213778Z               "line": 37
2026-06-22T02:23:00.5213859Z             },
2026-06-22T02:23:00.5213939Z             {
2026-06-22T02:23:00.5214057Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5214138Z               "line": 25
2026-06-22T02:23:00.5214230Z             },
2026-06-22T02:23:00.5214309Z             {
2026-06-22T02:23:00.5214430Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5214516Z               "line": 114
2026-06-22T02:23:00.5214606Z             },
2026-06-22T02:23:00.5214686Z             {
2026-06-22T02:23:00.5214797Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5214883Z               "line": 267
2026-06-22T02:23:00.5214958Z             },
2026-06-22T02:23:00.5215040Z             {
2026-06-22T02:23:00.5215155Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5215231Z               "line": 289
2026-06-22T02:23:00.5215316Z             },
2026-06-22T02:23:00.5215393Z             {
2026-06-22T02:23:00.5215507Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5215592Z               "line": 307
2026-06-22T02:23:00.5215674Z             },
2026-06-22T02:23:00.5215756Z             {
2026-06-22T02:23:00.5215878Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:23:00.5215955Z               "line": 33
2026-06-22T02:23:00.5216042Z             },
2026-06-22T02:23:00.5216127Z             {
2026-06-22T02:23:00.5216240Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5216326Z               "line": 52
2026-06-22T02:23:00.5216407Z             },
2026-06-22T02:23:00.5216486Z             {
2026-06-22T02:23:00.5216595Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5216676Z               "line": 180
2026-06-22T02:23:00.5216768Z             },
2026-06-22T02:23:00.5216862Z             {
2026-06-22T02:23:00.5216977Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5217058Z               "line": 190
2026-06-22T02:23:00.5217139Z             },
2026-06-22T02:23:00.5217225Z             {
2026-06-22T02:23:00.5217326Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5217406Z               "line": 250
2026-06-22T02:23:00.5217558Z             },
2026-06-22T02:23:00.5217636Z             {
2026-06-22T02:23:00.5217830Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5217911Z               "line": 284
2026-06-22T02:23:00.5217994Z             },
2026-06-22T02:23:00.5218073Z             {
2026-06-22T02:23:00.5218183Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5218270Z               "line": 295
2026-06-22T02:23:00.5218355Z             },
2026-06-22T02:23:00.5218431Z             {
2026-06-22T02:23:00.5218527Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5218614Z               "line": 1193
2026-06-22T02:23:00.5218693Z             }
2026-06-22T02:23:00.5218774Z           ]
2026-06-22T02:23:00.5218851Z         },
2026-06-22T02:23:00.5219036Z         "int": {
2026-06-22T02:23:00.5219117Z           "complete": true,
2026-06-22T02:23:00.5219203Z           "evidence": [
2026-06-22T02:23:00.5219284Z             {
2026-06-22T02:23:00.5219425Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-22T02:23:00.5219500Z               "line": 18
2026-06-22T02:23:00.5219577Z             }
2026-06-22T02:23:00.5219664Z           ]
2026-06-22T02:23:00.5219739Z         },
2026-06-22T02:23:00.5219820Z         "unit": {
2026-06-22T02:23:00.5219912Z           "complete": true,
2026-06-22T02:23:00.5219993Z           "evidence": [
2026-06-22T02:23:00.5220063Z             {
2026-06-22T02:23:00.5220173Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5220264Z               "line": 364
2026-06-22T02:23:00.5220345Z             },
2026-06-22T02:23:00.5220426Z             {
2026-06-22T02:23:00.5220537Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5220612Z               "line": 416
2026-06-22T02:23:00.5220693Z             },
2026-06-22T02:23:00.5220769Z             {
2026-06-22T02:23:00.5220875Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5220960Z               "line": 426
2026-06-22T02:23:00.5221036Z             },
2026-06-22T02:23:00.5221123Z             {
2026-06-22T02:23:00.5221242Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5221331Z               "line": 436
2026-06-22T02:23:00.5221403Z             },
2026-06-22T02:23:00.5221486Z             {
2026-06-22T02:23:00.5221589Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5221669Z               "line": 456
2026-06-22T02:23:00.5221750Z             },
2026-06-22T02:23:00.5221831Z             {
2026-06-22T02:23:00.5221944Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5222024Z               "line": 478
2026-06-22T02:23:00.5222115Z             },
2026-06-22T02:23:00.5222197Z             {
2026-06-22T02:23:00.5222320Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5222401Z               "line": 491
2026-06-22T02:23:00.5222478Z             },
2026-06-22T02:23:00.5222564Z             {
2026-06-22T02:23:00.5222667Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:23:00.5222760Z               "line": 502
2026-06-22T02:23:00.5222845Z             },
2026-06-22T02:23:00.5222921Z             {
2026-06-22T02:23:00.5223036Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:23:00.5223117Z               "line": 108
2026-06-22T02:23:00.5223202Z             },
2026-06-22T02:23:00.5223274Z             {
2026-06-22T02:23:00.5223379Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:23:00.5223460Z               "line": 119
2026-06-22T02:23:00.5223536Z             },
2026-06-22T02:23:00.5223622Z             {
2026-06-22T02:23:00.5223724Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:23:00.5223803Z               "line": 127
2026-06-22T02:23:00.5223889Z             },
2026-06-22T02:23:00.5223970Z             {
2026-06-22T02:23:00.5224076Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5224265Z               "line": 474
2026-06-22T02:23:00.5224348Z             },
2026-06-22T02:23:00.5224429Z             {
2026-06-22T02:23:00.5224641Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5224718Z               "line": 501
2026-06-22T02:23:00.5224800Z             },
2026-06-22T02:23:00.5224879Z             {
2026-06-22T02:23:00.5224985Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5225062Z               "line": 520
2026-06-22T02:23:00.5225143Z             },
2026-06-22T02:23:00.5225227Z             {
2026-06-22T02:23:00.5225333Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5225419Z               "line": 535
2026-06-22T02:23:00.5225504Z             },
2026-06-22T02:23:00.5225586Z             {
2026-06-22T02:23:00.5225696Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5225776Z               "line": 561
2026-06-22T02:23:00.5225861Z             },
2026-06-22T02:23:00.5225949Z             {
2026-06-22T02:23:00.5226053Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5226153Z               "line": 581
2026-06-22T02:23:00.5226234Z             },
2026-06-22T02:23:00.5226321Z             {
2026-06-22T02:23:00.5226433Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5226525Z               "line": 591
2026-06-22T02:23:00.5226612Z             },
2026-06-22T02:23:00.5226688Z             {
2026-06-22T02:23:00.5226800Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5226886Z               "line": 683
2026-06-22T02:23:00.5226967Z             },
2026-06-22T02:23:00.5227038Z             {
2026-06-22T02:23:00.5227155Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5227246Z               "line": 885
2026-06-22T02:23:00.5227323Z             },
2026-06-22T02:23:00.5227403Z             {
2026-06-22T02:23:00.5227503Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5227595Z               "line": 9792
2026-06-22T02:23:00.5227681Z             }
2026-06-22T02:23:00.5227756Z           ]
2026-06-22T02:23:00.5227852Z         }
2026-06-22T02:23:00.5227929Z       }
2026-06-22T02:23:00.5228005Z     },
2026-06-22T02:23:00.5228085Z     {
2026-06-22T02:23:00.5228177Z       "id": "REQ-TERM-5",
2026-06-22T02:23:00.5229710Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-22T02:23:00.5229806Z       "requiredStages": [
2026-06-22T02:23:00.5229891Z         "doc",
2026-06-22T02:23:00.5229970Z         "impl",
2026-06-22T02:23:00.5230055Z         "unit",
2026-06-22T02:23:00.5230142Z         "int"
2026-06-22T02:23:00.5230224Z       ],
2026-06-22T02:23:00.5230308Z       "stages": {
2026-06-22T02:23:00.5230389Z         "doc": {
2026-06-22T02:23:00.5230481Z           "complete": true,
2026-06-22T02:23:00.5230562Z           "evidence": [
2026-06-22T02:23:00.5230647Z             {
2026-06-22T02:23:00.5230748Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.5230829Z               "line": 234
2026-06-22T02:23:00.5230905Z             }
2026-06-22T02:23:00.5230990Z           ]
2026-06-22T02:23:00.5231077Z         },
2026-06-22T02:23:00.5231158Z         "impl": {
2026-06-22T02:23:00.5231257Z           "complete": true,
2026-06-22T02:23:00.5231343Z           "evidence": [
2026-06-22T02:23:00.5231416Z             {
2026-06-22T02:23:00.5231520Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5231712Z               "line": 75
2026-06-22T02:23:00.5231792Z             },
2026-06-22T02:23:00.5231863Z             {
2026-06-22T02:23:00.5232051Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5232135Z               "line": 131
2026-06-22T02:23:00.5232215Z             },
2026-06-22T02:23:00.5232296Z             {
2026-06-22T02:23:00.5232401Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.5232480Z               "line": 22
2026-06-22T02:23:00.5232566Z             },
2026-06-22T02:23:00.5232647Z             {
2026-06-22T02:23:00.5232748Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.5232833Z               "line": 87
2026-06-22T02:23:00.5232918Z             },
2026-06-22T02:23:00.5232995Z             {
2026-06-22T02:23:00.5233105Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:23:00.5233176Z               "line": 30
2026-06-22T02:23:00.5233266Z             },
2026-06-22T02:23:00.5233348Z             {
2026-06-22T02:23:00.5233472Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5233561Z               "line": 103
2026-06-22T02:23:00.5233644Z             },
2026-06-22T02:23:00.5233725Z             {
2026-06-22T02:23:00.5233838Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5233925Z               "line": 167
2026-06-22T02:23:00.5234016Z             },
2026-06-22T02:23:00.5234101Z             {
2026-06-22T02:23:00.5234206Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5234293Z               "line": 434
2026-06-22T02:23:00.5234373Z             },
2026-06-22T02:23:00.5234454Z             {
2026-06-22T02:23:00.5234545Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5234641Z               "line": 5650
2026-06-22T02:23:00.5234720Z             },
2026-06-22T02:23:00.5234793Z             {
2026-06-22T02:23:00.5234898Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5234984Z               "line": 5957
2026-06-22T02:23:00.5235068Z             }
2026-06-22T02:23:00.5235153Z           ]
2026-06-22T02:23:00.5235235Z         },
2026-06-22T02:23:00.5235331Z         "int": {
2026-06-22T02:23:00.5235416Z           "complete": true,
2026-06-22T02:23:00.5235497Z           "evidence": [
2026-06-22T02:23:00.5235574Z             {
2026-06-22T02:23:00.5235721Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:23:00.5235802Z               "line": 17
2026-06-22T02:23:00.5235880Z             }
2026-06-22T02:23:00.5235960Z           ]
2026-06-22T02:23:00.5236041Z         },
2026-06-22T02:23:00.5236126Z         "unit": {
2026-06-22T02:23:00.5236222Z           "complete": true,
2026-06-22T02:23:00.5236308Z           "evidence": [
2026-06-22T02:23:00.5236389Z             {
2026-06-22T02:23:00.5236504Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5236580Z               "line": 375
2026-06-22T02:23:00.5236660Z             },
2026-06-22T02:23:00.5236751Z             {
2026-06-22T02:23:00.5236866Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.5236961Z               "line": 162
2026-06-22T02:23:00.5237042Z             },
2026-06-22T02:23:00.5237123Z             {
2026-06-22T02:23:00.5237224Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.5237304Z               "line": 179
2026-06-22T02:23:00.5237384Z             },
2026-06-22T02:23:00.5237465Z             {
2026-06-22T02:23:00.5237574Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.5237658Z               "line": 201
2026-06-22T02:23:00.5237744Z             },
2026-06-22T02:23:00.5237821Z             {
2026-06-22T02:23:00.5237922Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.5238006Z               "line": 212
2026-06-22T02:23:00.5238087Z             },
2026-06-22T02:23:00.5238165Z             {
2026-06-22T02:23:00.5238264Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:23:00.5238436Z               "line": 223
2026-06-22T02:23:00.5238508Z             },
2026-06-22T02:23:00.5238593Z             {
2026-06-22T02:23:00.5238789Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5238879Z               "line": 1525
2026-06-22T02:23:00.5239032Z             },
2026-06-22T02:23:00.5239114Z             {
2026-06-22T02:23:00.5239228Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5239313Z               "line": 1568
2026-06-22T02:23:00.5239405Z             },
2026-06-22T02:23:00.5239481Z             {
2026-06-22T02:23:00.5239599Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5239686Z               "line": 606
2026-06-22T02:23:00.5239767Z             },
2026-06-22T02:23:00.5239851Z             {
2026-06-22T02:23:00.5239957Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5240044Z               "line": 634
2026-06-22T02:23:00.5240129Z             },
2026-06-22T02:23:00.5240204Z             {
2026-06-22T02:23:00.5240318Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5240404Z               "line": 646
2026-06-22T02:23:00.5240488Z             },
2026-06-22T02:23:00.5240568Z             {
2026-06-22T02:23:00.5240678Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5240774Z               "line": 669
2026-06-22T02:23:00.5240854Z             },
2026-06-22T02:23:00.5240935Z             {
2026-06-22T02:23:00.5241027Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5241113Z               "line": 8503
2026-06-22T02:23:00.5241193Z             },
2026-06-22T02:23:00.5241274Z             {
2026-06-22T02:23:00.5241380Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5241461Z               "line": 8561
2026-06-22T02:23:00.5241541Z             }
2026-06-22T02:23:00.5241618Z           ]
2026-06-22T02:23:00.5241709Z         }
2026-06-22T02:23:00.5241790Z       }
2026-06-22T02:23:00.5241870Z     },
2026-06-22T02:23:00.5241967Z     {
2026-06-22T02:23:00.5242047Z       "id": "REQ-TERM-6",
2026-06-22T02:23:00.5243112Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-22T02:23:00.5243216Z       "requiredStages": [
2026-06-22T02:23:00.5243288Z         "impl",
2026-06-22T02:23:00.5243374Z         "unit",
2026-06-22T02:23:00.5243455Z         "int"
2026-06-22T02:23:00.5243531Z       ],
2026-06-22T02:23:00.5243617Z       "stages": {
2026-06-22T02:23:00.5243698Z         "doc": {
2026-06-22T02:23:00.5243793Z           "complete": false,
2026-06-22T02:23:00.5243875Z           "evidence": []
2026-06-22T02:23:00.5243960Z         },
2026-06-22T02:23:00.5244041Z         "impl": {
2026-06-22T02:23:00.5244141Z           "complete": true,
2026-06-22T02:23:00.5244214Z           "evidence": [
2026-06-22T02:23:00.5244299Z             {
2026-06-22T02:23:00.5244418Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5244504Z               "line": 132
2026-06-22T02:23:00.5244585Z             },
2026-06-22T02:23:00.5244666Z             {
2026-06-22T02:23:00.5244770Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5244858Z               "line": 187
2026-06-22T02:23:00.5244937Z             },
2026-06-22T02:23:00.5245019Z             {
2026-06-22T02:23:00.5245134Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.5245220Z               "line": 17
2026-06-22T02:23:00.5245300Z             },
2026-06-22T02:23:00.5245381Z             {
2026-06-22T02:23:00.5245483Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.5245572Z               "line": 104
2026-06-22T02:23:00.5245771Z             },
2026-06-22T02:23:00.5245853Z             {
2026-06-22T02:23:00.5245976Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5246158Z               "line": 319
2026-06-22T02:23:00.5246234Z             },
2026-06-22T02:23:00.5246310Z             {
2026-06-22T02:23:00.5246435Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5246520Z               "line": 396
2026-06-22T02:23:00.5246596Z             }
2026-06-22T02:23:00.5246681Z           ]
2026-06-22T02:23:00.5246759Z         },
2026-06-22T02:23:00.5246840Z         "int": {
2026-06-22T02:23:00.5246921Z           "complete": true,
2026-06-22T02:23:00.5247006Z           "evidence": [
2026-06-22T02:23:00.5247093Z             {
2026-06-22T02:23:00.5247235Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:23:00.5247320Z               "line": 18
2026-06-22T02:23:00.5247394Z             }
2026-06-22T02:23:00.5247479Z           ]
2026-06-22T02:23:00.5247559Z         },
2026-06-22T02:23:00.5247635Z         "unit": {
2026-06-22T02:23:00.5247732Z           "complete": true,
2026-06-22T02:23:00.5247813Z           "evidence": [
2026-06-22T02:23:00.5247897Z             {
2026-06-22T02:23:00.5248006Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.5248092Z               "line": 135
2026-06-22T02:23:00.5248172Z             },
2026-06-22T02:23:00.5248257Z             {
2026-06-22T02:23:00.5248357Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.5248439Z               "line": 150
2026-06-22T02:23:00.5248524Z             },
2026-06-22T02:23:00.5248595Z             {
2026-06-22T02:23:00.5248705Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.5248791Z               "line": 166
2026-06-22T02:23:00.5248872Z             },
2026-06-22T02:23:00.5249030Z             {
2026-06-22T02:23:00.5249130Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:23:00.5249234Z               "line": 257
2026-06-22T02:23:00.5249312Z             },
2026-06-22T02:23:00.5249407Z             {
2026-06-22T02:23:00.5249520Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5249601Z               "line": 738
2026-06-22T02:23:00.5249688Z             },
2026-06-22T02:23:00.5249763Z             {
2026-06-22T02:23:00.5249878Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5249960Z               "line": 759
2026-06-22T02:23:00.5250045Z             },
2026-06-22T02:23:00.5250121Z             {
2026-06-22T02:23:00.5250222Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:23:00.5250304Z               "line": 726
2026-06-22T02:23:00.5250388Z             }
2026-06-22T02:23:00.5250470Z           ]
2026-06-22T02:23:00.5250551Z         }
2026-06-22T02:23:00.5250633Z       }
2026-06-22T02:23:00.5250703Z     },
2026-06-22T02:23:00.5250788Z     {
2026-06-22T02:23:00.5250878Z       "id": "REQ-TERM-7",
2026-06-22T02:23:00.5252007Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-22T02:23:00.5252096Z       "requiredStages": [
2026-06-22T02:23:00.5252178Z         "impl",
2026-06-22T02:23:00.5252265Z         "unit",
2026-06-22T02:23:00.5252350Z         "int"
2026-06-22T02:23:00.5252421Z       ],
2026-06-22T02:23:00.5252508Z       "stages": {
2026-06-22T02:23:00.5252589Z         "doc": {
2026-06-22T02:23:00.5252673Z           "complete": false,
2026-06-22T02:23:00.5252769Z           "evidence": []
2026-06-22T02:23:00.5252846Z         },
2026-06-22T02:23:00.5252927Z         "impl": {
2026-06-22T02:23:00.5253007Z           "complete": true,
2026-06-22T02:23:00.5253204Z           "evidence": [
2026-06-22T02:23:00.5253279Z             {
2026-06-22T02:23:00.5253488Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5253582Z               "line": 133
2026-06-22T02:23:00.5253662Z             },
2026-06-22T02:23:00.5253737Z             {
2026-06-22T02:23:00.5253849Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5253939Z               "line": 326
2026-06-22T02:23:00.5254019Z             },
2026-06-22T02:23:00.5254101Z             {
2026-06-22T02:23:00.5254206Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:23:00.5254286Z               "line": 15
2026-06-22T02:23:00.5254372Z             },
2026-06-22T02:23:00.5254450Z             {
2026-06-22T02:23:00.5254564Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:23:00.5254644Z               "line": 32
2026-06-22T02:23:00.5254726Z             },
2026-06-22T02:23:00.5254812Z             {
2026-06-22T02:23:00.5254926Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:23:00.5255007Z               "line": 49
2026-06-22T02:23:00.5255094Z             },
2026-06-22T02:23:00.5255169Z             {
2026-06-22T02:23:00.5257781Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5257895Z               "line": 286
2026-06-22T02:23:00.5257982Z             },
2026-06-22T02:23:00.5258062Z             {
2026-06-22T02:23:00.5258196Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5258278Z               "line": 320
2026-06-22T02:23:00.5258363Z             }
2026-06-22T02:23:00.5258434Z           ]
2026-06-22T02:23:00.5258519Z         },
2026-06-22T02:23:00.5258600Z         "int": {
2026-06-22T02:23:00.5258680Z           "complete": true,
2026-06-22T02:23:00.5258770Z           "evidence": [
2026-06-22T02:23:00.5258835Z             {
2026-06-22T02:23:00.5259060Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:23:00.5259160Z               "line": 19
2026-06-22T02:23:00.5259237Z             }
2026-06-22T02:23:00.5259333Z           ]
2026-06-22T02:23:00.5259413Z         },
2026-06-22T02:23:00.5259493Z         "unit": {
2026-06-22T02:23:00.5259580Z           "complete": true,
2026-06-22T02:23:00.5259666Z           "evidence": [
2026-06-22T02:23:00.5259742Z             {
2026-06-22T02:23:00.5259867Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5259962Z               "line": 455
2026-06-22T02:23:00.5260038Z             },
2026-06-22T02:23:00.5260123Z             {
2026-06-22T02:23:00.5260229Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:23:00.5260314Z               "line": 568
2026-06-22T02:23:00.5260395Z             },
2026-06-22T02:23:00.5260477Z             {
2026-06-22T02:23:00.5260591Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:23:00.5260676Z               "line": 58
2026-06-22T02:23:00.5260757Z             },
2026-06-22T02:23:00.5260845Z             {
2026-06-22T02:23:00.5260958Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:23:00.5261030Z               "line": 77
2026-06-22T02:23:00.5261121Z             },
2026-06-22T02:23:00.5261202Z             {
2026-06-22T02:23:00.5261301Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:23:00.5261386Z               "line": 87
2026-06-22T02:23:00.5261467Z             },
2026-06-22T02:23:00.5261552Z             {
2026-06-22T02:23:00.5261660Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:23:00.5261741Z               "line": 94
2026-06-22T02:23:00.5261822Z             },
2026-06-22T02:23:00.5261894Z             {
2026-06-22T02:23:00.5262012Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5262094Z               "line": 691
2026-06-22T02:23:00.5262176Z             },
2026-06-22T02:23:00.5262257Z             {
2026-06-22T02:23:00.5262361Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:23:00.5262581Z               "line": 716
2026-06-22T02:23:00.5262661Z             }
2026-06-22T02:23:00.5262829Z           ]
2026-06-22T02:23:00.5262905Z         }
2026-06-22T02:23:00.5262981Z       }
2026-06-22T02:23:00.5263063Z     },
2026-06-22T02:23:00.5263144Z     {
2026-06-22T02:23:00.5263233Z       "id": "REQ-UPD-1",
2026-06-22T02:23:00.5263344Z       "title": "Peer-propagated update over P2P",
2026-06-22T02:23:00.5263435Z       "requiredStages": [
2026-06-22T02:23:00.5263510Z         "impl",
2026-06-22T02:23:00.5263596Z         "unit",
2026-06-22T02:23:00.5263678Z         "int"
2026-06-22T02:23:00.5263750Z       ],
2026-06-22T02:23:00.5263835Z       "stages": {
2026-06-22T02:23:00.5263910Z         "doc": {
2026-06-22T02:23:00.5263995Z           "complete": false,
2026-06-22T02:23:00.5264081Z           "evidence": []
2026-06-22T02:23:00.5264166Z         },
2026-06-22T02:23:00.5264241Z         "impl": {
2026-06-22T02:23:00.5264332Z           "complete": true,
2026-06-22T02:23:00.5264428Z           "evidence": [
2026-06-22T02:23:00.5264504Z             {
2026-06-22T02:23:00.5264627Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5264710Z               "line": 28
2026-06-22T02:23:00.5264790Z             },
2026-06-22T02:23:00.5264865Z             {
2026-06-22T02:23:00.5264981Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5265067Z               "line": 103
2026-06-22T02:23:00.5265148Z             },
2026-06-22T02:23:00.5265223Z             {
2026-06-22T02:23:00.5265339Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5265428Z               "line": 342
2026-06-22T02:23:00.5265509Z             },
2026-06-22T02:23:00.5265590Z             {
2026-06-22T02:23:00.5265701Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5265782Z               "line": 22
2026-06-22T02:23:00.5265867Z             },
2026-06-22T02:23:00.5265940Z             {
2026-06-22T02:23:00.5266067Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5266153Z               "line": 207
2026-06-22T02:23:00.5266240Z             },
2026-06-22T02:23:00.5266322Z             {
2026-06-22T02:23:00.5266424Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5266501Z               "line": 283
2026-06-22T02:23:00.5266584Z             },
2026-06-22T02:23:00.5266665Z             {
2026-06-22T02:23:00.5266777Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5266857Z               "line": 340
2026-06-22T02:23:00.5266944Z             },
2026-06-22T02:23:00.5267021Z             {
2026-06-22T02:23:00.5267134Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.5267216Z               "line": 37
2026-06-22T02:23:00.5267297Z             }
2026-06-22T02:23:00.5267383Z           ]
2026-06-22T02:23:00.5267463Z         },
2026-06-22T02:23:00.5267545Z         "int": {
2026-06-22T02:23:00.5267631Z           "complete": true,
2026-06-22T02:23:00.5267716Z           "evidence": [
2026-06-22T02:23:00.5267806Z             {
2026-06-22T02:23:00.5267936Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:23:00.5268017Z               "line": 207
2026-06-22T02:23:00.5268102Z             },
2026-06-22T02:23:00.5268179Z             {
2026-06-22T02:23:00.5268293Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:23:00.5268379Z               "line": 1082
2026-06-22T02:23:00.5268450Z             }
2026-06-22T02:23:00.5268538Z           ]
2026-06-22T02:23:00.5268618Z         },
2026-06-22T02:23:00.5268698Z         "unit": {
2026-06-22T02:23:00.5268784Z           "complete": true,
2026-06-22T02:23:00.5268872Z           "evidence": [
2026-06-22T02:23:00.5269017Z             {
2026-06-22T02:23:00.5269131Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5269222Z               "line": 490
2026-06-22T02:23:00.5269301Z             },
2026-06-22T02:23:00.5269381Z             {
2026-06-22T02:23:00.5269620Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5269787Z               "line": 616
2026-06-22T02:23:00.5269874Z             },
2026-06-22T02:23:00.5269944Z             {
2026-06-22T02:23:00.5270068Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:23:00.5270150Z               "line": 277
2026-06-22T02:23:00.5270231Z             },
2026-06-22T02:23:00.5270316Z             {
2026-06-22T02:23:00.5270417Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.5270503Z               "line": 124
2026-06-22T02:23:00.5270584Z             },
2026-06-22T02:23:00.5270669Z             {
2026-06-22T02:23:00.5270775Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.5270850Z               "line": 200
2026-06-22T02:23:00.5270931Z             }
2026-06-22T02:23:00.5271012Z           ]
2026-06-22T02:23:00.5271095Z         }
2026-06-22T02:23:00.5271175Z       }
2026-06-22T02:23:00.5271266Z     },
2026-06-22T02:23:00.5271342Z     {
2026-06-22T02:23:00.5271429Z       "id": "REQ-UPD-2",
2026-06-22T02:23:00.5271575Z       "title": "All binaries signature-verified before handoff",
2026-06-22T02:23:00.5271667Z       "requiredStages": [
2026-06-22T02:23:00.5271743Z         "impl",
2026-06-22T02:23:00.5271823Z         "unit"
2026-06-22T02:23:00.5271903Z       ],
2026-06-22T02:23:00.5271979Z       "stages": {
2026-06-22T02:23:00.5272051Z         "doc": {
2026-06-22T02:23:00.5272140Z           "complete": false,
2026-06-22T02:23:00.5272225Z           "evidence": []
2026-06-22T02:23:00.5272306Z         },
2026-06-22T02:23:00.5272387Z         "impl": {
2026-06-22T02:23:00.5272469Z           "complete": true,
2026-06-22T02:23:00.5272554Z           "evidence": [
2026-06-22T02:23:00.5272635Z             {
2026-06-22T02:23:00.5272755Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5272840Z               "line": 343
2026-06-22T02:23:00.5272916Z             },
2026-06-22T02:23:00.5272999Z             {
2026-06-22T02:23:00.5273108Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5273198Z               "line": 476
2026-06-22T02:23:00.5273279Z             },
2026-06-22T02:23:00.5273361Z             {
2026-06-22T02:23:00.5273475Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5273560Z               "line": 29
2026-06-22T02:23:00.5273647Z             },
2026-06-22T02:23:00.5273728Z             {
2026-06-22T02:23:00.5273837Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5273913Z               "line": 271
2026-06-22T02:23:00.5273995Z             },
2026-06-22T02:23:00.5274075Z             {
2026-06-22T02:23:00.5274180Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5274267Z               "line": 288
2026-06-22T02:23:00.5274348Z             },
2026-06-22T02:23:00.5274432Z             {
2026-06-22T02:23:00.5274536Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5274627Z               "line": 408
2026-06-22T02:23:00.5274698Z             },
2026-06-22T02:23:00.5274782Z             {
2026-06-22T02:23:00.5274892Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5274974Z               "line": 558
2026-06-22T02:23:00.5275055Z             },
2026-06-22T02:23:00.5275135Z             {
2026-06-22T02:23:00.5275250Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5275326Z               "line": 155
2026-06-22T02:23:00.5275398Z             }
2026-06-22T02:23:00.5275478Z           ]
2026-06-22T02:23:00.5275560Z         },
2026-06-22T02:23:00.5275641Z         "int": {
2026-06-22T02:23:00.5275727Z           "complete": false,
2026-06-22T02:23:00.5275817Z           "evidence": []
2026-06-22T02:23:00.5275889Z         },
2026-06-22T02:23:00.5275970Z         "unit": {
2026-06-22T02:23:00.5276060Z           "complete": true,
2026-06-22T02:23:00.5276146Z           "evidence": [
2026-06-22T02:23:00.5276299Z             {
2026-06-22T02:23:00.5276408Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5276572Z               "line": 750
2026-06-22T02:23:00.5276651Z             },
2026-06-22T02:23:00.5276732Z             {
2026-06-22T02:23:00.5276848Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5276933Z               "line": 811
2026-06-22T02:23:00.5277014Z             },
2026-06-22T02:23:00.5277081Z             {
2026-06-22T02:23:00.5277187Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5277262Z               "line": 825
2026-06-22T02:23:00.5277347Z             },
2026-06-22T02:23:00.5277427Z             {
2026-06-22T02:23:00.5277533Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5277623Z               "line": 841
2026-06-22T02:23:00.5277704Z             },
2026-06-22T02:23:00.5277786Z             {
2026-06-22T02:23:00.5277895Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5277995Z               "line": 932
2026-06-22T02:23:00.5278076Z             },
2026-06-22T02:23:00.5278163Z             {
2026-06-22T02:23:00.5278267Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5278352Z               "line": 414
2026-06-22T02:23:00.5278434Z             },
2026-06-22T02:23:00.5278515Z             {
2026-06-22T02:23:00.5278624Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5278705Z               "line": 427
2026-06-22T02:23:00.5278774Z             },
2026-06-22T02:23:00.5278853Z             {
2026-06-22T02:23:00.5279059Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:23:00.5279145Z               "line": 410
2026-06-22T02:23:00.5279230Z             }
2026-06-22T02:23:00.5279297Z           ]
2026-06-22T02:23:00.5279398Z         }
2026-06-22T02:23:00.5279479Z       }
2026-06-22T02:23:00.5279554Z     },
2026-06-22T02:23:00.5279634Z     {
2026-06-22T02:23:00.5279715Z       "id": "REQ-UPD-3",
2026-06-22T02:23:00.5279885Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-22T02:23:00.5279979Z       "requiredStages": [
2026-06-22T02:23:00.5280062Z         "impl",
2026-06-22T02:23:00.5280148Z         "unit",
2026-06-22T02:23:00.5280228Z         "int"
2026-06-22T02:23:00.5280304Z       ],
2026-06-22T02:23:00.5280386Z       "stages": {
2026-06-22T02:23:00.5280467Z         "doc": {
2026-06-22T02:23:00.5280552Z           "complete": false,
2026-06-22T02:23:00.5280643Z           "evidence": []
2026-06-22T02:23:00.5280724Z         },
2026-06-22T02:23:00.5280806Z         "impl": {
2026-06-22T02:23:00.5280881Z           "complete": true,
2026-06-22T02:23:00.5280968Z           "evidence": [
2026-06-22T02:23:00.5281044Z             {
2026-06-22T02:23:00.5281162Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5281243Z               "line": 40
2026-06-22T02:23:00.5281326Z             },
2026-06-22T02:23:00.5281406Z             {
2026-06-22T02:23:00.5281525Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5281611Z               "line": 87
2026-06-22T02:23:00.5281688Z             },
2026-06-22T02:23:00.5281777Z             {
2026-06-22T02:23:00.5281878Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.5281965Z               "line": 1136
2026-06-22T02:23:00.5282045Z             },
2026-06-22T02:23:00.5282116Z             {
2026-06-22T02:23:00.5282227Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.5282313Z               "line": 1895
2026-06-22T02:23:00.5282393Z             },
2026-06-22T02:23:00.5282478Z             {
2026-06-22T02:23:00.5282577Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5282658Z               "line": 26
2026-06-22T02:23:00.5282738Z             },
2026-06-22T02:23:00.5282818Z             {
2026-06-22T02:23:00.5282924Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5283006Z               "line": 114
2026-06-22T02:23:00.5283195Z             },
2026-06-22T02:23:00.5283272Z             {
2026-06-22T02:23:00.5283457Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5283544Z               "line": 246
2026-06-22T02:23:00.5283625Z             },
2026-06-22T02:23:00.5283706Z             {
2026-06-22T02:23:00.5283810Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5283893Z               "line": 2442
2026-06-22T02:23:00.5283973Z             }
2026-06-22T02:23:00.5284058Z           ]
2026-06-22T02:23:00.5284130Z         },
2026-06-22T02:23:00.5284212Z         "int": {
2026-06-22T02:23:00.5284302Z           "complete": true,
2026-06-22T02:23:00.5284387Z           "evidence": [
2026-06-22T02:23:00.5284464Z             {
2026-06-22T02:23:00.5284579Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:23:00.5284659Z               "line": 58
2026-06-22T02:23:00.5284740Z             }
2026-06-22T02:23:00.5284823Z           ]
2026-06-22T02:23:00.5284913Z         },
2026-06-22T02:23:00.5284993Z         "unit": {
2026-06-22T02:23:00.5285073Z           "complete": true,
2026-06-22T02:23:00.5285154Z           "evidence": [
2026-06-22T02:23:00.5285239Z             {
2026-06-22T02:23:00.5285342Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5285433Z               "line": 532
2026-06-22T02:23:00.5285519Z             },
2026-06-22T02:23:00.5285596Z             {
2026-06-22T02:23:00.5285714Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5285801Z               "line": 585
2026-06-22T02:23:00.5285882Z             },
2026-06-22T02:23:00.5285963Z             {
2026-06-22T02:23:00.5286076Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5286163Z               "line": 653
2026-06-22T02:23:00.5286239Z             },
2026-06-22T02:23:00.5286329Z             {
2026-06-22T02:23:00.5286431Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:23:00.5286526Z               "line": 1102
2026-06-22T02:23:00.5286592Z             },
2026-06-22T02:23:00.5286677Z             {
2026-06-22T02:23:00.5286807Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5286892Z               "line": 271
2026-06-22T02:23:00.5286973Z             },
2026-06-22T02:23:00.5287040Z             {
2026-06-22T02:23:00.5287155Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5287235Z               "line": 295
2026-06-22T02:23:00.5287321Z             },
2026-06-22T02:23:00.5287403Z             {
2026-06-22T02:23:00.5287517Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5287598Z               "line": 316
2026-06-22T02:23:00.5287670Z             },
2026-06-22T02:23:00.5287756Z             {
2026-06-22T02:23:00.5287864Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5287949Z               "line": 332
2026-06-22T02:23:00.5288021Z             }
2026-06-22T02:23:00.5288103Z           ]
2026-06-22T02:23:00.5288184Z         }
2026-06-22T02:23:00.5288264Z       }
2026-06-22T02:23:00.5288346Z     },
2026-06-22T02:23:00.5288432Z     {
2026-06-22T02:23:00.5288517Z       "id": "REQ-UPD-4",
2026-06-22T02:23:00.5288690Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-22T02:23:00.5288784Z       "requiredStages": [
2026-06-22T02:23:00.5288860Z         "impl",
2026-06-22T02:23:00.5289023Z         "unit"
2026-06-22T02:23:00.5289108Z       ],
2026-06-22T02:23:00.5289184Z       "stages": {
2026-06-22T02:23:00.5289270Z         "doc": {
2026-06-22T02:23:00.5289358Z           "complete": false,
2026-06-22T02:23:00.5289442Z           "evidence": []
2026-06-22T02:23:00.5289513Z         },
2026-06-22T02:23:00.5289600Z         "impl": {
2026-06-22T02:23:00.5289691Z           "complete": true,
2026-06-22T02:23:00.5289766Z           "evidence": [
2026-06-22T02:23:00.5289852Z             {
2026-06-22T02:23:00.5289973Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5290166Z               "line": 41
2026-06-22T02:23:00.5290252Z             },
2026-06-22T02:23:00.5290426Z             {
2026-06-22T02:23:00.5290539Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5290617Z               "line": 88
2026-06-22T02:23:00.5290704Z             },
2026-06-22T02:23:00.5290783Z             {
2026-06-22T02:23:00.5290898Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:23:00.5290975Z               "line": 23
2026-06-22T02:23:00.5291056Z             },
2026-06-22T02:23:00.5291141Z             {
2026-06-22T02:23:00.5291257Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:23:00.5291337Z               "line": 56
2026-06-22T02:23:00.5291412Z             },
2026-06-22T02:23:00.5291493Z             {
2026-06-22T02:23:00.5291595Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:23:00.5291680Z               "line": 77
2026-06-22T02:23:00.5291760Z             },
2026-06-22T02:23:00.5291842Z             {
2026-06-22T02:23:00.5291952Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:23:00.5292042Z               "line": 236
2026-06-22T02:23:00.5292114Z             },
2026-06-22T02:23:00.5292196Z             {
2026-06-22T02:23:00.5292299Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:23:00.5292386Z               "line": 108
2026-06-22T02:23:00.5292467Z             },
2026-06-22T02:23:00.5292549Z             {
2026-06-22T02:23:00.5292662Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.5292748Z               "line": 270
2026-06-22T02:23:00.5292830Z             },
2026-06-22T02:23:00.5292911Z             {
2026-06-22T02:23:00.5293014Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5293099Z               "line": 2441
2026-06-22T02:23:00.5293181Z             }
2026-06-22T02:23:00.5293260Z           ]
2026-06-22T02:23:00.5293346Z         },
2026-06-22T02:23:00.5293431Z         "int": {
2026-06-22T02:23:00.5293522Z           "complete": false,
2026-06-22T02:23:00.5293608Z           "evidence": []
2026-06-22T02:23:00.5293693Z         },
2026-06-22T02:23:00.5293774Z         "unit": {
2026-06-22T02:23:00.5293861Z           "complete": true,
2026-06-22T02:23:00.5293946Z           "evidence": [
2026-06-22T02:23:00.5294027Z             {
2026-06-22T02:23:00.5294133Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5294218Z               "line": 581
2026-06-22T02:23:00.5294303Z             },
2026-06-22T02:23:00.5294385Z             {
2026-06-22T02:23:00.5294509Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5294590Z               "line": 706
2026-06-22T02:23:00.5294671Z             },
2026-06-22T02:23:00.5294748Z             {
2026-06-22T02:23:00.5294857Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:23:00.5294943Z               "line": 384
2026-06-22T02:23:00.5295019Z             },
2026-06-22T02:23:00.5295111Z             {
2026-06-22T02:23:00.5295219Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:23:00.5295305Z               "line": 102
2026-06-22T02:23:00.5295392Z             },
2026-06-22T02:23:00.5295468Z             {
2026-06-22T02:23:00.5295586Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:23:00.5295671Z               "line": 123
2026-06-22T02:23:00.5295757Z             },
2026-06-22T02:23:00.5295837Z             {
2026-06-22T02:23:00.5295950Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:23:00.5296031Z               "line": 142
2026-06-22T02:23:00.5296118Z             },
2026-06-22T02:23:00.5296198Z             {
2026-06-22T02:23:00.5296308Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:23:00.5296394Z               "line": 582
2026-06-22T02:23:00.5296480Z             },
2026-06-22T02:23:00.5296565Z             {
2026-06-22T02:23:00.5296676Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:23:00.5296861Z               "line": 566
2026-06-22T02:23:00.5296947Z             },
2026-06-22T02:23:00.5297100Z             {
2026-06-22T02:23:00.5297204Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5297285Z               "line": 8256
2026-06-22T02:23:00.5297372Z             }
2026-06-22T02:23:00.5297452Z           ]
2026-06-22T02:23:00.5297524Z         }
2026-06-22T02:23:00.5297600Z       }
2026-06-22T02:23:00.5297672Z     },
2026-06-22T02:23:00.5297753Z     {
2026-06-22T02:23:00.5297843Z       "id": "REQ-UPD-5",
2026-06-22T02:23:00.5297983Z       "title": "spt-core ripple-updates registered adapters",
2026-06-22T02:23:00.5298072Z       "requiredStages": [
2026-06-22T02:23:00.5298154Z         "impl",
2026-06-22T02:23:00.5298235Z         "unit"
2026-06-22T02:23:00.5298316Z       ],
2026-06-22T02:23:00.5298396Z       "stages": {
2026-06-22T02:23:00.5298476Z         "doc": {
2026-06-22T02:23:00.5298562Z           "complete": false,
2026-06-22T02:23:00.5298639Z           "evidence": []
2026-06-22T02:23:00.5298730Z         },
2026-06-22T02:23:00.5298814Z         "impl": {
2026-06-22T02:23:00.5298906Z           "complete": true,
2026-06-22T02:23:00.5299054Z           "evidence": [
2026-06-22T02:23:00.5299134Z             {
2026-06-22T02:23:00.5299269Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5299359Z               "line": 27
2026-06-22T02:23:00.5299439Z             },
2026-06-22T02:23:00.5299521Z             {
2026-06-22T02:23:00.5299645Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5299726Z               "line": 87
2026-06-22T02:23:00.5299807Z             },
2026-06-22T02:23:00.5299888Z             {
2026-06-22T02:23:00.5300016Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5300097Z               "line": 145
2026-06-22T02:23:00.5300180Z             },
2026-06-22T02:23:00.5300251Z             {
2026-06-22T02:23:00.5300374Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5300465Z               "line": 492
2026-06-22T02:23:00.5300547Z             },
2026-06-22T02:23:00.5300636Z             {
2026-06-22T02:23:00.5300745Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5300826Z               "line": 546
2026-06-22T02:23:00.5300907Z             }
2026-06-22T02:23:00.5300977Z           ]
2026-06-22T02:23:00.5301058Z         },
2026-06-22T02:23:00.5301144Z         "int": {
2026-06-22T02:23:00.5301230Z           "complete": false,
2026-06-22T02:23:00.5301310Z           "evidence": []
2026-06-22T02:23:00.5301396Z         },
2026-06-22T02:23:00.5301477Z         "unit": {
2026-06-22T02:23:00.5301568Z           "complete": true,
2026-06-22T02:23:00.5301644Z           "evidence": [
2026-06-22T02:23:00.5301730Z             {
2026-06-22T02:23:00.5301855Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5301936Z               "line": 272
2026-06-22T02:23:00.5302015Z             },
2026-06-22T02:23:00.5302098Z             {
2026-06-22T02:23:00.5302216Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5302306Z               "line": 286
2026-06-22T02:23:00.5302392Z             },
2026-06-22T02:23:00.5302475Z             {
2026-06-22T02:23:00.5302593Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5302679Z               "line": 300
2026-06-22T02:23:00.5302751Z             },
2026-06-22T02:23:00.5302823Z             {
2026-06-22T02:23:00.5302941Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5303022Z               "line": 314
2026-06-22T02:23:00.5303109Z             },
2026-06-22T02:23:00.5303189Z             {
2026-06-22T02:23:00.5303318Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5303405Z               "line": 348
2026-06-22T02:23:00.5303485Z             },
2026-06-22T02:23:00.5303565Z             {
2026-06-22T02:23:00.5303689Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5303886Z               "line": 1071
2026-06-22T02:23:00.5304044Z             }
2026-06-22T02:23:00.5304126Z           ]
2026-06-22T02:23:00.5304206Z         }
2026-06-22T02:23:00.5304286Z       }
2026-06-22T02:23:00.5304369Z     },
2026-06-22T02:23:00.5304449Z     {
2026-06-22T02:23:00.5304530Z       "id": "REQ-UPD-6",
2026-06-22T02:23:00.5305318Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-22T02:23:00.5305403Z       "requiredStages": [
2026-06-22T02:23:00.5305479Z         "doc",
2026-06-22T02:23:00.5305569Z         "impl",
2026-06-22T02:23:00.5305652Z         "unit",
2026-06-22T02:23:00.5305723Z         "int"
2026-06-22T02:23:00.5305798Z       ],
2026-06-22T02:23:00.5305889Z       "stages": {
2026-06-22T02:23:00.5305977Z         "doc": {
2026-06-22T02:23:00.5306061Z           "complete": true,
2026-06-22T02:23:00.5306160Z           "evidence": [
2026-06-22T02:23:00.5306246Z             {
2026-06-22T02:23:00.5306373Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:23:00.5306463Z               "line": 3
2026-06-22T02:23:00.5306543Z             },
2026-06-22T02:23:00.5306625Z             {
2026-06-22T02:23:00.5306730Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-22T02:23:00.5306820Z               "line": 3
2026-06-22T02:23:00.5306906Z             },
2026-06-22T02:23:00.5306974Z             {
2026-06-22T02:23:00.5307135Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-22T02:23:00.5307216Z               "line": 3
2026-06-22T02:23:00.5307302Z             }
2026-06-22T02:23:00.5307383Z           ]
2026-06-22T02:23:00.5307464Z         },
2026-06-22T02:23:00.5307551Z         "impl": {
2026-06-22T02:23:00.5307636Z           "complete": true,
2026-06-22T02:23:00.5307722Z           "evidence": [
2026-06-22T02:23:00.5307802Z             {
2026-06-22T02:23:00.5307932Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5308013Z               "line": 76
2026-06-22T02:23:00.5308098Z             },
2026-06-22T02:23:00.5308180Z             {
2026-06-22T02:23:00.5308298Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5308370Z               "line": 212
2026-06-22T02:23:00.5308451Z             },
2026-06-22T02:23:00.5308534Z             {
2026-06-22T02:23:00.5308646Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5308728Z               "line": 69
2026-06-22T02:23:00.5308810Z             },
2026-06-22T02:23:00.5308891Z             {
2026-06-22T02:23:00.5309051Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5309141Z               "line": 133
2026-06-22T02:23:00.5309224Z             },
2026-06-22T02:23:00.5309304Z             {
2026-06-22T02:23:00.5309423Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5309514Z               "line": 243
2026-06-22T02:23:00.5309595Z             },
2026-06-22T02:23:00.5309675Z             {
2026-06-22T02:23:00.5309786Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5309867Z               "line": 406
2026-06-22T02:23:00.5309953Z             },
2026-06-22T02:23:00.5310028Z             {
2026-06-22T02:23:00.5310139Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5310220Z               "line": 534
2026-06-22T02:23:00.5310296Z             },
2026-06-22T02:23:00.5310376Z             {
2026-06-22T02:23:00.5310492Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5310581Z               "line": 548
2026-06-22T02:23:00.5310657Z             },
2026-06-22T02:23:00.5310740Z             {
2026-06-22T02:23:00.5310854Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5311049Z               "line": 603
2026-06-22T02:23:00.5311131Z             },
2026-06-22T02:23:00.5311301Z             {
2026-06-22T02:23:00.5311419Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5311505Z               "line": 634
2026-06-22T02:23:00.5311589Z             },
2026-06-22T02:23:00.5311655Z             {
2026-06-22T02:23:00.5311785Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:23:00.5311866Z               "line": 137
2026-06-22T02:23:00.5311946Z             },
2026-06-22T02:23:00.5312028Z             {
2026-06-22T02:23:00.5312147Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:23:00.5312232Z               "line": 184
2026-06-22T02:23:00.5312309Z             },
2026-06-22T02:23:00.5312381Z             {
2026-06-22T02:23:00.5312496Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5312580Z               "line": 78
2026-06-22T02:23:00.5312663Z             },
2026-06-22T02:23:00.5312744Z             {
2026-06-22T02:23:00.5312853Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5312943Z               "line": 114
2026-06-22T02:23:00.5313030Z             },
2026-06-22T02:23:00.5313110Z             {
2026-06-22T02:23:00.5313215Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5313302Z               "line": 185
2026-06-22T02:23:00.5313378Z             },
2026-06-22T02:23:00.5313457Z             {
2026-06-22T02:23:00.5313563Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5313640Z               "line": 260
2026-06-22T02:23:00.5313717Z             },
2026-06-22T02:23:00.5313796Z             {
2026-06-22T02:23:00.5313897Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5313979Z               "line": 292
2026-06-22T02:23:00.5314064Z             },
2026-06-22T02:23:00.5314139Z             {
2026-06-22T02:23:00.5314258Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5314353Z               "line": 323
2026-06-22T02:23:00.5314432Z             },
2026-06-22T02:23:00.5314523Z             {
2026-06-22T02:23:00.5314628Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5314719Z               "line": 346
2026-06-22T02:23:00.5314799Z             },
2026-06-22T02:23:00.5314880Z             {
2026-06-22T02:23:00.5314986Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5315062Z               "line": 388
2026-06-22T02:23:00.5315147Z             },
2026-06-22T02:23:00.5315229Z             {
2026-06-22T02:23:00.5315343Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5315428Z               "line": 398
2026-06-22T02:23:00.5315510Z             },
2026-06-22T02:23:00.5315592Z             {
2026-06-22T02:23:00.5315691Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5315782Z               "line": 410
2026-06-22T02:23:00.5315863Z             },
2026-06-22T02:23:00.5315944Z             {
2026-06-22T02:23:00.5316049Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5316149Z               "line": 420
2026-06-22T02:23:00.5316236Z             },
2026-06-22T02:23:00.5316315Z             {
2026-06-22T02:23:00.5316435Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5316522Z               "line": 439
2026-06-22T02:23:00.5316607Z             },
2026-06-22T02:23:00.5316687Z             {
2026-06-22T02:23:00.5316801Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5316887Z               "line": 449
2026-06-22T02:23:00.5316961Z             },
2026-06-22T02:23:00.5317047Z             {
2026-06-22T02:23:00.5317156Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5317248Z               "line": 94
2026-06-22T02:23:00.5317323Z             },
2026-06-22T02:23:00.5317403Z             {
2026-06-22T02:23:00.5317596Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5317676Z               "line": 120
2026-06-22T02:23:00.5317834Z             },
2026-06-22T02:23:00.5317915Z             {
2026-06-22T02:23:00.5320550Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5320655Z               "line": 135
2026-06-22T02:23:00.5320732Z             },
2026-06-22T02:23:00.5320817Z             {
2026-06-22T02:23:00.5320941Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5321023Z               "line": 162
2026-06-22T02:23:00.5321108Z             },
2026-06-22T02:23:00.5321189Z             {
2026-06-22T02:23:00.5321310Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5321395Z               "line": 174
2026-06-22T02:23:00.5321479Z             },
2026-06-22T02:23:00.5321561Z             {
2026-06-22T02:23:00.5321667Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5321752Z               "line": 185
2026-06-22T02:23:00.5321841Z             },
2026-06-22T02:23:00.5321917Z             {
2026-06-22T02:23:00.5322032Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5322121Z               "line": 451
2026-06-22T02:23:00.5322201Z             },
2026-06-22T02:23:00.5322283Z             {
2026-06-22T02:23:00.5322394Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5322473Z               "line": 573
2026-06-22T02:23:00.5322554Z             },
2026-06-22T02:23:00.5322631Z             {
2026-06-22T02:23:00.5322736Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5322816Z               "line": 171
2026-06-22T02:23:00.5322888Z             },
2026-06-22T02:23:00.5322970Z             {
2026-06-22T02:23:00.5323074Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.5323155Z               "line": 65
2026-06-22T02:23:00.5323223Z             },
2026-06-22T02:23:00.5323308Z             {
2026-06-22T02:23:00.5323422Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.5323513Z               "line": 71
2026-06-22T02:23:00.5323604Z             },
2026-06-22T02:23:00.5323680Z             {
2026-06-22T02:23:00.5323784Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:23:00.5323867Z               "line": 77
2026-06-22T02:23:00.5323943Z             },
2026-06-22T02:23:00.5324013Z             {
2026-06-22T02:23:00.5324133Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5324215Z               "line": 778
2026-06-22T02:23:00.5324300Z             },
2026-06-22T02:23:00.5324376Z             {
2026-06-22T02:23:00.5324477Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5324558Z               "line": 795
2026-06-22T02:23:00.5324638Z             },
2026-06-22T02:23:00.5324718Z             {
2026-06-22T02:23:00.5324814Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5324899Z               "line": 838
2026-06-22T02:23:00.5324979Z             },
2026-06-22T02:23:00.5325054Z             {
2026-06-22T02:23:00.5325159Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5325246Z               "line": 981
2026-06-22T02:23:00.5325335Z             },
2026-06-22T02:23:00.5325412Z             {
2026-06-22T02:23:00.5325518Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5325599Z               "line": 1131
2026-06-22T02:23:00.5325674Z             }
2026-06-22T02:23:00.5325760Z           ]
2026-06-22T02:23:00.5325837Z         },
2026-06-22T02:23:00.5325918Z         "int": {
2026-06-22T02:23:00.5326003Z           "complete": true,
2026-06-22T02:23:00.5326089Z           "evidence": [
2026-06-22T02:23:00.5326171Z             {
2026-06-22T02:23:00.5326299Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:23:00.5326389Z               "line": 569
2026-06-22T02:23:00.5326472Z             },
2026-06-22T02:23:00.5326556Z             {
2026-06-22T02:23:00.5326676Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:23:00.5326899Z               "line": 135
2026-06-22T02:23:00.5327068Z             }
2026-06-22T02:23:00.5327149Z           ]
2026-06-22T02:23:00.5327228Z         },
2026-06-22T02:23:00.5327309Z         "unit": {
2026-06-22T02:23:00.5327390Z           "complete": true,
2026-06-22T02:23:00.5327480Z           "evidence": [
2026-06-22T02:23:00.5327559Z             {
2026-06-22T02:23:00.5327683Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5327765Z               "line": 626
2026-06-22T02:23:00.5327846Z             },
2026-06-22T02:23:00.5327926Z             {
2026-06-22T02:23:00.5328041Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5328127Z               "line": 675
2026-06-22T02:23:00.5328203Z             },
2026-06-22T02:23:00.5328288Z             {
2026-06-22T02:23:00.5328399Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:23:00.5328475Z               "line": 696
2026-06-22T02:23:00.5328560Z             },
2026-06-22T02:23:00.5328632Z             {
2026-06-22T02:23:00.5328747Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5328837Z               "line": 513
2026-06-22T02:23:00.5328918Z             },
2026-06-22T02:23:00.5329085Z             {
2026-06-22T02:23:00.5329190Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5329271Z               "line": 638
2026-06-22T02:23:00.5329353Z             },
2026-06-22T02:23:00.5329442Z             {
2026-06-22T02:23:00.5329548Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5329630Z               "line": 675
2026-06-22T02:23:00.5329701Z             },
2026-06-22T02:23:00.5329781Z             {
2026-06-22T02:23:00.5329891Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5329978Z               "line": 947
2026-06-22T02:23:00.5330062Z             },
2026-06-22T02:23:00.5330128Z             {
2026-06-22T02:23:00.5330247Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5330329Z               "line": 969
2026-06-22T02:23:00.5330415Z             },
2026-06-22T02:23:00.5330495Z             {
2026-06-22T02:23:00.5330605Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5330696Z               "line": 986
2026-06-22T02:23:00.5330776Z             },
2026-06-22T02:23:00.5330857Z             {
2026-06-22T02:23:00.5330963Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5331044Z               "line": 1001
2026-06-22T02:23:00.5331120Z             },
2026-06-22T02:23:00.5331197Z             {
2026-06-22T02:23:00.5331297Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5331378Z               "line": 1027
2026-06-22T02:23:00.5331463Z             },
2026-06-22T02:23:00.5331535Z             {
2026-06-22T02:23:00.5331654Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:23:00.5331735Z               "line": 457
2026-06-22T02:23:00.5331816Z             },
2026-06-22T02:23:00.5331894Z             {
2026-06-22T02:23:00.5332016Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:23:00.5332102Z               "line": 338
2026-06-22T02:23:00.5332174Z             },
2026-06-22T02:23:00.5332260Z             {
2026-06-22T02:23:00.5332364Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5332449Z               "line": 10549
2026-06-22T02:23:00.5332531Z             },
2026-06-22T02:23:00.5332606Z             {
2026-06-22T02:23:00.5332705Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5332785Z               "line": 1260
2026-06-22T02:23:00.5332867Z             },
2026-06-22T02:23:00.5332944Z             {
2026-06-22T02:23:00.5333052Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:23:00.5333143Z               "line": 130
2026-06-22T02:23:00.5333225Z             }
2026-06-22T02:23:00.5333296Z           ]
2026-06-22T02:23:00.5333473Z         }
2026-06-22T02:23:00.5333554Z       }
2026-06-22T02:23:00.5333634Z     },
2026-06-22T02:23:00.5333705Z     {
2026-06-22T02:23:00.5333883Z       "id": "REQ-UPD-7",
2026-06-22T02:23:00.5335972Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-22T02:23:00.5336073Z       "requiredStages": [
2026-06-22T02:23:00.5336154Z         "impl",
2026-06-22T02:23:00.5336234Z         "unit"
2026-06-22T02:23:00.5336330Z       ],
2026-06-22T02:23:00.5336407Z       "stages": {
2026-06-22T02:23:00.5336488Z         "doc": {
2026-06-22T02:23:00.5336591Z           "complete": false,
2026-06-22T02:23:00.5336679Z           "evidence": []
2026-06-22T02:23:00.5336760Z         },
2026-06-22T02:23:00.5336845Z         "impl": {
2026-06-22T02:23:00.5336936Z           "complete": true,
2026-06-22T02:23:00.5337022Z           "evidence": [
2026-06-22T02:23:00.5337107Z             {
2026-06-22T02:23:00.5337216Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5337304Z               "line": 2626
2026-06-22T02:23:00.5337385Z             }
2026-06-22T02:23:00.5337459Z           ]
2026-06-22T02:23:00.5337536Z         },
2026-06-22T02:23:00.5337604Z         "int": {
2026-06-22T02:23:00.5337699Z           "complete": false,
2026-06-22T02:23:00.5337788Z           "evidence": []
2026-06-22T02:23:00.5337864Z         },
2026-06-22T02:23:00.5337950Z         "unit": {
2026-06-22T02:23:00.5338036Z           "complete": true,
2026-06-22T02:23:00.5338119Z           "evidence": [
2026-06-22T02:23:00.5338195Z             {
2026-06-22T02:23:00.5338301Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5338388Z               "line": 10525
2026-06-22T02:23:00.5338467Z             }
2026-06-22T02:23:00.5338548Z           ]
2026-06-22T02:23:00.5338631Z         }
2026-06-22T02:23:00.5338706Z       }
2026-06-22T02:23:00.5338777Z     },
2026-06-22T02:23:00.5338863Z     {
2026-06-22T02:23:00.5339011Z       "id": "REQ-UPD-8",
2026-06-22T02:23:00.5341437Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-22T02:23:00.5341547Z       "requiredStages": [
2026-06-22T02:23:00.5341628Z         "impl",
2026-06-22T02:23:00.5341709Z         "unit"
2026-06-22T02:23:00.5341781Z       ],
2026-06-22T02:23:00.5341857Z       "stages": {
2026-06-22T02:23:00.5341933Z         "doc": {
2026-06-22T02:23:00.5342023Z           "complete": false,
2026-06-22T02:23:00.5342100Z           "evidence": []
2026-06-22T02:23:00.5342177Z         },
2026-06-22T02:23:00.5342257Z         "impl": {
2026-06-22T02:23:00.5342348Z           "complete": true,
2026-06-22T02:23:00.5342430Z           "evidence": [
2026-06-22T02:23:00.5342515Z             {
2026-06-22T02:23:00.5342744Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5342915Z               "line": 77
2026-06-22T02:23:00.5343000Z             },
2026-06-22T02:23:00.5343081Z             {
2026-06-22T02:23:00.5343199Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5343284Z               "line": 49
2026-06-22T02:23:00.5343360Z             },
2026-06-22T02:23:00.5343436Z             {
2026-06-22T02:23:00.5343546Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5343626Z               "line": 152
2026-06-22T02:23:00.5343703Z             },
2026-06-22T02:23:00.5343785Z             {
2026-06-22T02:23:00.5343894Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5343979Z               "line": 215
2026-06-22T02:23:00.5344066Z             },
2026-06-22T02:23:00.5344147Z             {
2026-06-22T02:23:00.5344256Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5344348Z               "line": 230
2026-06-22T02:23:00.5344428Z             },
2026-06-22T02:23:00.5344509Z             {
2026-06-22T02:23:00.5344633Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5344715Z               "line": 247
2026-06-22T02:23:00.5344795Z             },
2026-06-22T02:23:00.5344872Z             {
2026-06-22T02:23:00.5344967Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5345058Z               "line": 269
2026-06-22T02:23:00.5345129Z             },
2026-06-22T02:23:00.5345215Z             {
2026-06-22T02:23:00.5345321Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5345401Z               "line": 66
2026-06-22T02:23:00.5345486Z             },
2026-06-22T02:23:00.5345563Z             {
2026-06-22T02:23:00.5345669Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5345749Z               "line": 154
2026-06-22T02:23:00.5345833Z             },
2026-06-22T02:23:00.5345914Z             {
2026-06-22T02:23:00.5346015Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5346108Z               "line": 2430
2026-06-22T02:23:00.5346188Z             },
2026-06-22T02:23:00.5346275Z             {
2026-06-22T02:23:00.5346371Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5346461Z               "line": 2493
2026-06-22T02:23:00.5346547Z             },
2026-06-22T02:23:00.5346624Z             {
2026-06-22T02:23:00.5346724Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5346799Z               "line": 2503
2026-06-22T02:23:00.5346880Z             },
2026-06-22T02:23:00.5346953Z             {
2026-06-22T02:23:00.5347053Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5347133Z               "line": 2510
2026-06-22T02:23:00.5347214Z             },
2026-06-22T02:23:00.5347296Z             {
2026-06-22T02:23:00.5347386Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5347471Z               "line": 2627
2026-06-22T02:23:00.5347554Z             },
2026-06-22T02:23:00.5347635Z             {
2026-06-22T02:23:00.5347739Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5347820Z               "line": 480
2026-06-22T02:23:00.5347906Z             },
2026-06-22T02:23:00.5347992Z             {
2026-06-22T02:23:00.5348091Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:23:00.5348179Z               "line": 494
2026-06-22T02:23:00.5348255Z             }
2026-06-22T02:23:00.5348339Z           ]
2026-06-22T02:23:00.5348415Z         },
2026-06-22T02:23:00.5348501Z         "int": {
2026-06-22T02:23:00.5348586Z           "complete": false,
2026-06-22T02:23:00.5348670Z           "evidence": []
2026-06-22T02:23:00.5348746Z         },
2026-06-22T02:23:00.5348823Z         "unit": {
2026-06-22T02:23:00.5348913Z           "complete": true,
2026-06-22T02:23:00.5349056Z           "evidence": [
2026-06-22T02:23:00.5349132Z             {
2026-06-22T02:23:00.5349261Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:23:00.5349491Z               "line": 476
2026-06-22T02:23:00.5349576Z             },
2026-06-22T02:23:00.5349767Z             {
2026-06-22T02:23:00.5349886Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:23:00.5349967Z               "line": 580
2026-06-22T02:23:00.5350053Z             },
2026-06-22T02:23:00.5350130Z             {
2026-06-22T02:23:00.5350224Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5350310Z               "line": 10527
2026-06-22T02:23:00.5350396Z             },
2026-06-22T02:23:00.5350483Z             {
2026-06-22T02:23:00.5350581Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5350663Z               "line": 10549
2026-06-22T02:23:00.5350741Z             }
2026-06-22T02:23:00.5350822Z           ]
2026-06-22T02:23:00.5350896Z         }
2026-06-22T02:23:00.5350982Z       }
2026-06-22T02:23:00.5351065Z     },
2026-06-22T02:23:00.5351137Z     {
2026-06-22T02:23:00.5351229Z       "id": "REQ-UPD-9",
2026-06-22T02:23:00.5353735Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-22T02:23:00.5353825Z       "requiredStages": [
2026-06-22T02:23:00.5353910Z         "doc",
2026-06-22T02:23:00.5353992Z         "impl",
2026-06-22T02:23:00.5354074Z         "unit"
2026-06-22T02:23:00.5354168Z       ],
2026-06-22T02:23:00.5354249Z       "stages": {
2026-06-22T02:23:00.5354331Z         "doc": {
2026-06-22T02:23:00.5354411Z           "complete": true,
2026-06-22T02:23:00.5354502Z           "evidence": [
2026-06-22T02:23:00.5354583Z             {
2026-06-22T02:23:00.5354679Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.5354764Z               "line": 93
2026-06-22T02:23:00.5354840Z             },
2026-06-22T02:23:00.5354923Z             {
2026-06-22T02:23:00.5355022Z               "path": "docs/MANIFEST.md",
2026-06-22T02:23:00.5355112Z               "line": 285
2026-06-22T02:23:00.5355184Z             }
2026-06-22T02:23:00.5355266Z           ]
2026-06-22T02:23:00.5355351Z         },
2026-06-22T02:23:00.5355427Z         "impl": {
2026-06-22T02:23:00.5355513Z           "complete": true,
2026-06-22T02:23:00.5355599Z           "evidence": [
2026-06-22T02:23:00.5355684Z             {
2026-06-22T02:23:00.5355818Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5355914Z               "line": 128
2026-06-22T02:23:00.5355999Z             },
2026-06-22T02:23:00.5356076Z             {
2026-06-22T02:23:00.5356191Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5356276Z               "line": 533
2026-06-22T02:23:00.5356361Z             },
2026-06-22T02:23:00.5356431Z             {
2026-06-22T02:23:00.5356542Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5356635Z               "line": 459
2026-06-22T02:23:00.5356716Z             },
2026-06-22T02:23:00.5356801Z             {
2026-06-22T02:23:00.5356903Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5356988Z               "line": 505
2026-06-22T02:23:00.5357063Z             },
2026-06-22T02:23:00.5357135Z             {
2026-06-22T02:23:00.5357260Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5357421Z               "line": 928
2026-06-22T02:23:00.5357503Z             },
2026-06-22T02:23:00.5357660Z             {
2026-06-22T02:23:00.5357774Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:23:00.5357861Z               "line": 302
2026-06-22T02:23:00.5357941Z             },
2026-06-22T02:23:00.5358013Z             {
2026-06-22T02:23:00.5358104Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5358195Z               "line": 5675
2026-06-22T02:23:00.5358274Z             },
2026-06-22T02:23:00.5358365Z             {
2026-06-22T02:23:00.5358462Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5358542Z               "line": 5720
2026-06-22T02:23:00.5358628Z             },
2026-06-22T02:23:00.5358705Z             {
2026-06-22T02:23:00.5358810Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5358885Z               "line": 5857
2026-06-22T02:23:00.5359036Z             },
2026-06-22T02:23:00.5359127Z             {
2026-06-22T02:23:00.5359226Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5359311Z               "line": 5878
2026-06-22T02:23:00.5359402Z             },
2026-06-22T02:23:00.5359488Z             {
2026-06-22T02:23:00.5359583Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5359664Z               "line": 5901
2026-06-22T02:23:00.5359746Z             },
2026-06-22T02:23:00.5359821Z             {
2026-06-22T02:23:00.5359912Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5359993Z               "line": 5928
2026-06-22T02:23:00.5360070Z             }
2026-06-22T02:23:00.5360136Z           ]
2026-06-22T02:23:00.5360213Z         },
2026-06-22T02:23:00.5360298Z         "int": {
2026-06-22T02:23:00.5360375Z           "complete": false,
2026-06-22T02:23:00.5360465Z           "evidence": []
2026-06-22T02:23:00.5360532Z         },
2026-06-22T02:23:00.5360618Z         "unit": {
2026-06-22T02:23:00.5360700Z           "complete": true,
2026-06-22T02:23:00.5360799Z           "evidence": [
2026-06-22T02:23:00.5360875Z             {
2026-06-22T02:23:00.5361005Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:23:00.5361095Z               "line": 259
2026-06-22T02:23:00.5361171Z             },
2026-06-22T02:23:00.5361257Z             {
2026-06-22T02:23:00.5361368Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:23:00.5361456Z               "line": 657
2026-06-22T02:23:00.5361542Z             },
2026-06-22T02:23:00.5361611Z             {
2026-06-22T02:23:00.5361725Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:23:00.5361808Z               "line": 1107
2026-06-22T02:23:00.5361889Z             },
2026-06-22T02:23:00.5361971Z             {
2026-06-22T02:23:00.5362077Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5362156Z               "line": 7565
2026-06-22T02:23:00.5362228Z             }
2026-06-22T02:23:00.5362310Z           ]
2026-06-22T02:23:00.5362396Z         }
2026-06-22T02:23:00.5362480Z       }
2026-06-22T02:23:00.5362557Z     },
2026-06-22T02:23:00.5362639Z     {
2026-06-22T02:23:00.5362762Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-22T02:23:00.5367900Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-22T02:23:00.5368220Z       "requiredStages": [
2026-06-22T02:23:00.5368301Z         "doc",
2026-06-22T02:23:00.5368388Z         "impl",
2026-06-22T02:23:00.5368478Z         "unit",
2026-06-22T02:23:00.5368559Z         "int"
2026-06-22T02:23:00.5368635Z       ],
2026-06-22T02:23:00.5368717Z       "stages": {
2026-06-22T02:23:00.5368802Z         "doc": {
2026-06-22T02:23:00.5368892Z           "complete": true,
2026-06-22T02:23:00.5369050Z           "evidence": [
2026-06-22T02:23:00.5369130Z             {
2026-06-22T02:23:00.5369207Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.5369289Z               "line": 342
2026-06-22T02:23:00.5369370Z             }
2026-06-22T02:23:00.5369459Z           ]
2026-06-22T02:23:00.5369540Z         },
2026-06-22T02:23:00.5369621Z         "impl": {
2026-06-22T02:23:00.5369706Z           "complete": true,
2026-06-22T02:23:00.5369790Z           "evidence": [
2026-06-22T02:23:00.5369866Z             {
2026-06-22T02:23:00.5369981Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:23:00.5370077Z               "line": 432
2026-06-22T02:23:00.5370152Z             },
2026-06-22T02:23:00.5370224Z             {
2026-06-22T02:23:00.5370349Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.5370430Z               "line": 683
2026-06-22T02:23:00.5370509Z             },
2026-06-22T02:23:00.5370587Z             {
2026-06-22T02:23:00.5370697Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.5370782Z               "line": 859
2026-06-22T02:23:00.5370863Z             },
2026-06-22T02:23:00.5370945Z             {
2026-06-22T02:23:00.5371044Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.5371125Z               "line": 700
2026-06-22T02:23:00.5371197Z             },
2026-06-22T02:23:00.5371284Z             {
2026-06-22T02:23:00.5371393Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.5371473Z               "line": 788
2026-06-22T02:23:00.5371556Z             }
2026-06-22T02:23:00.5371636Z           ]
2026-06-22T02:23:00.5371726Z         },
2026-06-22T02:23:00.5371807Z         "int": {
2026-06-22T02:23:00.5371894Z           "complete": true,
2026-06-22T02:23:00.5371979Z           "evidence": [
2026-06-22T02:23:00.5372060Z             {
2026-06-22T02:23:00.5372209Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:23:00.5372294Z               "line": 2052
2026-06-22T02:23:00.5372373Z             }
2026-06-22T02:23:00.5372454Z           ]
2026-06-22T02:23:00.5372526Z         },
2026-06-22T02:23:00.5372613Z         "unit": {
2026-06-22T02:23:00.5372702Z           "complete": true,
2026-06-22T02:23:00.5372783Z           "evidence": [
2026-06-22T02:23:00.5372865Z             {
2026-06-22T02:23:00.5372975Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.5373064Z               "line": 1448
2026-06-22T02:23:00.5373142Z             },
2026-06-22T02:23:00.5373223Z             {
2026-06-22T02:23:00.5373332Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:23:00.5373524Z               "line": 1605
2026-06-22T02:23:00.5373603Z             },
2026-06-22T02:23:00.5373771Z             {
2026-06-22T02:23:00.5373876Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.5373962Z               "line": 2336
2026-06-22T02:23:00.5374047Z             },
2026-06-22T02:23:00.5374115Z             {
2026-06-22T02:23:00.5374228Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:23:00.5374305Z               "line": 2403
2026-06-22T02:23:00.5374386Z             },
2026-06-22T02:23:00.5374463Z             {
2026-06-22T02:23:00.5374576Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:23:00.5374666Z               "line": 1002
2026-06-22T02:23:00.5374738Z             }
2026-06-22T02:23:00.5374814Z           ]
2026-06-22T02:23:00.5374888Z         }
2026-06-22T02:23:00.5374974Z       }
2026-06-22T02:23:00.5375045Z     },
2026-06-22T02:23:00.5375132Z     {
2026-06-22T02:23:00.5375236Z       "id": "REQ-WHOAMI-1",
2026-06-22T02:23:00.5376809Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-22T02:23:00.5376919Z       "requiredStages": [
2026-06-22T02:23:00.5377006Z         "doc",
2026-06-22T02:23:00.5377086Z         "impl",
2026-06-22T02:23:00.5377172Z         "unit"
2026-06-22T02:23:00.5377253Z       ],
2026-06-22T02:23:00.5377345Z       "stages": {
2026-06-22T02:23:00.5377429Z         "doc": {
2026-06-22T02:23:00.5377519Z           "complete": true,
2026-06-22T02:23:00.5377605Z           "evidence": [
2026-06-22T02:23:00.5377686Z             {
2026-06-22T02:23:00.5377774Z               "path": "CONTEXT.md",
2026-06-22T02:23:00.5377869Z               "line": 707
2026-06-22T02:23:00.5377950Z             }
2026-06-22T02:23:00.5378032Z           ]
2026-06-22T02:23:00.5378112Z         },
2026-06-22T02:23:00.5378189Z         "impl": {
2026-06-22T02:23:00.5378270Z           "complete": true,
2026-06-22T02:23:00.5378361Z           "evidence": [
2026-06-22T02:23:00.5378446Z             {
2026-06-22T02:23:00.5378546Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5378638Z               "line": 3190
2026-06-22T02:23:00.5378714Z             },
2026-06-22T02:23:00.5378799Z             {
2026-06-22T02:23:00.5378895Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5379057Z               "line": 3218
2026-06-22T02:23:00.5379138Z             }
2026-06-22T02:23:00.5379215Z           ]
2026-06-22T02:23:00.5379305Z         },
2026-06-22T02:23:00.5379395Z         "int": {
2026-06-22T02:23:00.5379495Z           "complete": false,
2026-06-22T02:23:00.5379573Z           "evidence": []
2026-06-22T02:23:00.5379653Z         },
2026-06-22T02:23:00.5379738Z         "unit": {
2026-06-22T02:23:00.5379825Z           "complete": true,
2026-06-22T02:23:00.5379907Z           "evidence": [
2026-06-22T02:23:00.5379977Z             {
2026-06-22T02:23:00.5380076Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5380152Z               "line": 7847
2026-06-22T02:23:00.5380234Z             },
2026-06-22T02:23:00.5380313Z             {
2026-06-22T02:23:00.5380416Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:23:00.5380512Z               "line": 7900
2026-06-22T02:23:00.5380590Z             }
2026-06-22T02:23:00.5380675Z           ]
2026-06-22T02:23:00.5380745Z         }
2026-06-22T02:23:00.5380832Z       }
2026-06-22T02:23:00.5380909Z     }
2026-06-22T02:23:00.5380990Z   ],
2026-06-22T02:23:00.5381079Z   "findings": []
2026-06-22T02:23:00.5381162Z }
